자바 흐름 요약

7215 단어 자바 흐름
저자 - bobo
자바 를 공부 할 때 I / O 흐름 에 관 한 내용 을 수박 겉 핥 기 식 으로 배 웠 습 니 다. 1 년 이 지 났 습 니 다. 몇 가지 프로젝트 를 한 후에 야 이런 대 추 를 통째로 삼 키 는 학습 방식 은 정말 바람 직 하지 않 습 니 다. 이런 기초 지식 에 대한 파악 이 튼튼 하지 않 기 때문에 프로젝트 에서 도 여러 가지 어려움 을 겪 을 수 있 습 니 다.그래서 그 당시 에 자 바 를 배 웠 던 그 책 을 다시 들 고 체계 적 으로 이런 기초 지식 을 다시 한 번 공 고 히 하여 총 결 을 하 였 습 니 다. 오늘 은 주로 IO 흐름 을 다시 한 번 복습 하 였 습 니 다. 다음은 제 가 자바 입 출력 흐름 에 관 한 총 결 입 니 다. 보 는 사람 은 뿌리 지 마 세 요. 왜냐하면 저 는 지금 대학교 2 학년 이 끝나 고 선배 들 처럼 배 워 야 할 것 이 많 기 때 문 입 니 다.
무엇이 흐름 입 니까?'흐름' 을 보면 우 리 는 보통 물 을 생각한다. 그렇지!물 처럼 물이 파이프 에서 흐 르 는 것 이 바로 흐름 이다.물 흐름 은 반드시 원천 과 목적지 가 있 을 것 이다. IO 흐름 도 예외 가 아니다. '원천' 은 우 리 는 그것 을 입력 흐름 (InputStream) 이 라 고 부 르 고 '목적지' 는 출력 흐름 (OutputStream) 이 라 고 부른다.프로그램 은 원본 을 가리 키 는 입력 흐름 에서 원본 의 데 이 터 를 읽 고 출력 흐름 에 데 이 터 를 기록 하여 목적지 로 전송 합 니 다.(주: 우리 가 일반적으로 사용 하 는 입 출력 흐름 은 파일 액세스 와 관련 이 있 지만 프로그램의 원본 과 목적지 도 키보드, 마우스, 메모리 또는 모니터 창 등 일 수 있 습 니 다) 
대류 에 관 한 지식 에 대한 이 해 는 반드시 문서 조작 에 대해 비교적 익숙 한 기초 위 에 세 워 져 야 한다. 그러나 문서 조작 에 관 한 지식 필 자 는 여기에 글 을 쓰 지 않 는 다. 그래서 만약 에 문서 에 관 한 기본 적 인 조작 을 모 르 면 먼저 알 아 본 다음 에 이 글 을 읽 어야 한다.자바 의 자바. io 패 키 지 는 대량의 흐름 을 제공 합 니 다. 자바 는 InputStream 추상 류 의 하위 클래스 가 만 든 흐름 대상 을 바이트 입력 흐름 이 라 고 부 릅 니 다. OutputStream 추상 류 의 하위 클래스 가 만 든 대상 을 바이트 출력 흐름 이 라 고 부 릅 니 다. Reader 추상 류 의 하위 클래스 가 만 든 흐름 대상 을 문자 입력 흐름, Writer 추상 류 의 하위 클래스 가 만 든 대상 을 문자 출력 흐름 이 라 고 부 릅 니 다. ,물론 자바 에는 랜 덤 스 트림 (RandomAccessFile), 배열 스 트림 (ByteArray OutputStream), 데이터 스 트림 (DataInputStream 과 DataOutputStream), 진도 바 가 있 는 입력 스 트림 (ProgressMonitorInputStream), 대상 스 트림 (Object InputStream 과 Object OutputStream) 등 여러 가지 흐름 이 있 습 니 다. 필 자 는 더 이상 일일이 소개 하지 않 고 자주 사용 하 는 것 만 소개 합 니 다.기초적인 흐름 조작.
1. 파일 바이트 흐름
FileInputStream 클래스 가 만 든 대상 을 파일 바이트 입력 흐름 이 라 고 합 니 다.FileInputStream 은 InputStream 에서 파생 된 간단 한 입력 흐름 입 니 다. FileInputStream 류 의 대상 을 만 들 기 위해 사용 자 는 구조 방법 을 호출 할 수 있 습 니 다.다음은 두 가지 구조 방법 을 보 여 줍 니 다.
FileInputStream(String name);
FileInputStream(File file);
첫 번 째 구조 방법 에 있 는 매개 변 수 는 파일 이름 을 표시 합 니 다. 이 구조 방법 으로 주어진 파일 이름 이 name 인 FileInputStream 대상 을 만 듭 니 다.
두 번 째 구조 방법 에 있 는 매개 변 수 는 파일 대상 을 표시 하고 이 구조 방법 으로 지정 한 파일 file 의 FileInputStream 대상 을 만 듭 니 다.
바이트 단위 로 파일 읽 기:
FileinputStream 은 InputStream 의 read 방법 을 계승 하 였 으 며, read 방법의 형식 은 다음 세 가지 가 있 습 니 다.
int read();
이 방법 은 원본 의 단일 바이트 데 이 터 를 순서대로 읽 고 바이트 값 (0 ~ 255 사이 의 정수) 을 되 돌려 줍 니 다. 원본 의 끝 에 도착 하면 이 방법 은 - 1 을 되 돌려 줍 니 다.
int read(byte b[]);
이 방법 은 파일 에서 b. length () 바 이 트 를 읽 은 다음 읽 은 바 이 트 를 b 배열 에 두 려 고 합 니 다.실제 읽 은 바이트 개 수 를 되 돌려 줍 니 다. 파일 끝 에 도착 하면 되 돌려 줍 니 다 - 1
int read(byte b[] , int off , int len);
이 재생 은 파일 에서 len 바 이 트 를 읽 고 읽 은 바 이 트 를 b 배열 에 저장 하려 고 합 니 다.off 는 첫 번 째 바이트 가 배열 에 저 장 된 위치 입 니 다.실제 읽 은 바이트 개 수 를 되 돌려 줍 니 다. 파일 의 끝 에 도착 하면 방법 은 - 1 을 되 돌려 줍 니 다.
public class Test {
 public static void main(String args[]){ int a; byte b[] = new byte[512]; try{ File f = new File("test.txt"); FileInputStream fis = new FileInputStream(f);//     f   while((a = fis.read(b,0,512)) != -1){//             String s = new String(b,0,a); System.out.println(s); } fis.close();//        }catch(IOException e){ e.printStackTrace();//      } } }

  FileOutputStream 클래스 는 FileInputStream 클래스 와 대응 하 는 클래스 입 니 다. 생 성 된 대상 을 파일 바이트 출력 흐름 이 라 고 합 니 다. 파일 바이트 출력 흐름 은 기본 적 인 파일 기록 능력 을 제공 합 니 다. FileOutputStream 클래스 도 두 가지 구조 방법 이 있 습 니 다.
FileOutputStream(String name);
FileOutputStream(File file);
첫 번 째 구조 방법 에 있 는 매개 변 수 는 파일 이름 을 표시 합 니 다. 이 구조 방법 으로 주어진 파일 이름 이 name 인 FileOutputStream 대상 을 만 듭 니 다.
두 번 째 구조 방법 에 있 는 매개 변 수 는 파일 대상 을 표시 하고 이 구조 방법 으로 지정 한 파일 file 의 FileOutputStream 대상 을 만 듭 니 다.
FileOutputStream 은 OutputStream 의 write 방법 을 계승 하 였 으 며, write 방법의 형식 은 다음 과 같다.
public void write(byte b[]);
이 방법 은 b. length 바이트 부터 파일 까지 쓰 는 기능 입 니 다.
public void write(byte b[],int off,int len);
이 놓 는 기능 은 주어진 바이트 배열 에서 오프셋 off 에서 len 바이트 부터 파일 까지 쓰 는 것 입 니 다. 매개 변수 b 는 데 이 터 를 저장 하 는 바이트 배열 이 고 off 는 데이터 의 시작 오프셋 이 며 len 은 쓸 바이트 수 입 니 다.
FileOutStream 스 트림 은 스 트림 을 닫 지 않 으 면 스 트림 이 닫 힐 때 까지 순서대로 파일 에 내용 을 기록 합 니 다.(주: 기록 할 파일 이 존재 하지 않 는 다 면 이 흐름 은 먼저 쓸 파일 을 만 든 다음 파일 에 내용 을 기록 합 니 다. 파일 이 존재 한다 면 파일 의 내용 을 새로 고 친 다음 순서대로 파일 에 내용 을 기록 합 니 다.) 다음은 인 스 턴 스 입 니 다.
public class Test {
 public static void main(String args[]){ byte b[] = "hello world!".getBytes(); try{ File f = new File("E://test.txt"); FileOutputStream fos = new FileOutputStream(f);//       f   fos.write(b); fos.write(b, 0, b.length); fos.close(); }catch(IOException e){ e.printStackTrace();//      } } }

  FileInputStream 과 FileOutputStream 에 대한 소 개 는 이 정도 입 니 다. 그러나 여러분 도 저 와 마찬가지 로 이 방식 으로 파일 을 읽 고 쓰 는 데 오류 가 발생 할 수 있 습 니 다. 이 는 바이트 입 출력 흐름 이 바이트 배열 로 데 이 터 를 읽 고 쓰 기 때 문 입 니 다. 즉, 바이트 가 기본 적 인 단일 비트 로 데 이 터 를 처리 하기 때 문 입 니 다. 따라서 바이트 흐름 은 유 니 코드 문 자 를 잘 조작 하지 못 합 니 다. 예 를 들 어 한자 와 같은 문자 입 니 다.파일 에 두 개의 바 이 트 를 차지 합 니 다. 바이트 흐름 을 사용 하면 읽 기 가 부적 절하 여 '난 장 판' 이 발생 합 니 다.현상. 그러나 sun 은 이러한 점 을 고려 하여 개발 자 편 의 를 위해 자바 는 파일 문자 흐름 도 제공 합 니 다. FileInputStream 과 FileOutputStream 바이트 흐름 에 대응 하 는 것 은 FileReader, FileWriter 문자 흐름 입 니 다. FileReader 와 FileWriter 는 각각 Reader 와 Wirter 의 하위 클래스 입 니 다. 그 구조 방법 은 다음 과 같 습 니 다.
FileReader(String filename);FileReader(File file);
FileWriter(String filename);FileWriter(File file);
FileReader 에는 주로 이 몇 가지 방법 이 있 습 니 다. int read (); int read (char c []); int read (char c [], int off, int len);
FileWriter 에는 주로 이 몇 가지 방법 이 있 습 니 다. void write (char c []); void write (char c [], int off, int length); void write (int n);
이 몇 가지 방법의 형식 은 방금 바이트 가 흐 르 는 몇 가지 방법 과 거의 비슷 하기 때문에 용법 도 기본적으로 일치 합 니 다. 다만 약간 다른 것 은 write 에 wirte (int n) 라 는 방법 이 하나 더 있 습 니 다. 이 방법 은 파일 에 문 자 를 쓰 는 것 입 니 다. n 은 문 자 를 나타 내 는 ASCII 값 입 니 다.
그러나 여러분 은 또 하나의 문 제 를 발견 할 수 있 습 니 다. 이런 방법 으로 파일 을 쓸 때 파일 의 원래 내용 을 비 운 후에 다시 쓰 는 것 입 니 다. 그러나 우 리 는 원래 의 내용 을 바탕 으로 한 단락 을 추가 하려 고 할 때 가 많 습 니 다. 이 럴 때 FileWriter 의 구조 방법 인 FileWriter (File file, boolean flag) 를 시도 해 보 세 요. 두 번 째 매개 변 수 는 원래 의 기초 위 에 추가 할 지 말 지 를 표시 합 니 다.
다음은 특수 한 흐름 인 버퍼 흐름 (Buffered Reader /
BufferedWriter). BufferedReader 와 BufferedWriter 클래스 가 만 든 대상 을
버퍼 입력, 출력 흐름, 두 가 지 는 파일 을 읽 고 쓰 는 능력 을 향상 시 켰 습 니 다. 예 를 들 어 때때로 우 리 는 줄 에 따라 파일 의 내용 을 읽 으 려 고 할 때 버퍼 흐름 을 사용 하면 매우 편리 합 니 다. Buffered Reader 와 Buffered Writer 두 사람의 원본 과 목적 지 는 문자 로 져 야 합 니 다.
스 트림 과 문자 출력 스 트림 입 니 다. 따라서 문자 입력 스 트림 을 Buffered Reader 스 트림 의 소스 로 사용 하면 문자 출력 스 트림 을 Buffered Writer 의 목적지 로 사용 합 니 다.
그러면 Buffered Reader 클래스 와 Buffered Writer 클래스 가 만 든 흐름 은 문자 입력 출력 보다
흐름 은 더 강 한 읽 기와 쓰기 능력 을 가지 고 있 습 니 다. 예 를 들 어 Buffered Reader 흐름 입 니 다.
줄 별로 파일 을 읽 을 수 있 습 니 다.
Buffered Reader 류 와 Buffered Writer 류 의 구조 방법 은 각각 다음 과 같다.
BufferedReader(Reader in);
BufferedWriter(Writer out);
BufferedReader 의 readLine () 방법 으로 한 줄 을 읽 을 수 있 습 니 다. 버퍼 흐름 에 대한 사용 은 아직 많 습 니 다. API 문 서 를 참조 하 십시오.
자, 처음으로 블 로 그 를 썼 는데 오후 내 내 썼 습 니 다. 자바 초보 자 에 게 도움 이 되 었 으 면 좋 겠 습 니 다!
 

좋은 웹페이지 즐겨찾기