[JAVA] 문자 Stream : BufferedReader / BufferedWriter (파일 복사 예제)
문자 Stream : BufferedReader / BufferedWriter (파일 복사 예제)
BufferedReader / BufferedWriter는 문자 입력 스트림으로부터 문자를 읽어 들이거나 문자 출력 스트림으로 문자를 내보낼 때 버퍼링을 함으로써 문자, 문자 배열, 문자열 라인 등을 보다 효율적으로 처리할 수 있도록 해준다.
InputStreamReader / OutputStreamWriter를 사용하는 경우는 한 문자씩 읽지만 버퍼링을 하게 되면 입출력 스트림으로부터 미리 버퍼에 데이터를 갖다 놓기 때문에 보다 효율적으로 입출력할 수 있다.
BufferedReader / BufferedWriter는 BufferedInputStream / BufferedOutputStream과 기능이 비슷하지만, BufferedInputStream / BufferedOutputStream은 바이트 단위의 처리, BufferedReader / BufferedWriter는 문자(Char) 단위 처리라는 차이가 있다.
시스템 버퍼에 저장하고 처리하는 Buffered의 설명은 아래를 확인하자.
[JAVA] ByteStream : BufferedInputStream / BufferedOutputStream (파일 복사 예제)
* BufferedReader / BufferedWriter 의 생성자
생성자 | 설 명 |
BufferedReader(Reader in) | 주어진 문자 입력 스트림 in에 대해 기본 크기의 버퍼를 갖는 객체를 생성한다. |
BufferedReader(Reader in , int size) | 주어진 문자 입력 스트림 in에 대해 size 크기의 버퍼를 갖는 객체를 생성한다. |
BufferedWriter(Writer out) | 주어진 문자 출력 스트림 out에 대해 기본 크기의 버퍼를 갖는 객체를 생성한다. |
BufferedWriter(Writer out, int size) | 주어진 문자 출력 스트림 out에 대해 size 크기의 버퍼를 갖는 객체를 생성한다. |
* BufferedReader / BuffereWriter의 메소드
BufferedReader / BufferedWriter는 기본적으로 Reader / Writer의 메소드를 상속받아 사용한다.
[JAVA] 문자 Stream : Reader / Writer
아래 2개의 메소드는 새로 추가된 메소드 이다.
BufferedReader 메소드 | 설 명 |
String readLine() | 한줄을 읽는다. "\n", "\r"을 만날때 까지 읽어온다. |
- readLine() 메소드를 사용하면서 문자 읽기를 더 효율적으로 할 수 있게 됐다.
- 기존의 read() 메소드로 한 문자씩 읽어오는 것보다 한줄씩 읽어서 처리하기에 더 간편하다.
BufferedWriter 메소드 | 설 명 |
String newLine() | 줄을 바꾼다. |
- newLine() 메소드로 문자를 출력할 때 줄 바꿈이 필요할 때, 버퍼에 newLine() 메소드를 사용하여 줄 바꿈을 할 수 있다.
* BufferedReader / BufferedWriter 사용 예제 파일 복사
|
- ReadFile.txt 파일에 데이터를 한줄씩 읽어서 버퍼에 저장한다.
- 읽은 라인을 CopyFile.txt 파일에 출력한다.
- 한줄씩 읽으므로, 한줄 출력 후 newLine() 메소드로 한줄 바꿈 해준다.
- 파일 복사가 완료되면 생성한 Reader /Writer 객체들을 닫아준다.
- "ReadFile.txt" 파일과 "CopyFile.txt" 파일을 확인해본다.
출처: https://hyeonstorage.tistory.com/249?category=578560 [개발이 하고 싶어요]
'JAVA > Java IO' 카테고리의 다른 글
[JAVA] serialVersionUID 이란? Warning 해결하기 (0) | 2019.08.07 |
---|---|
[JAVA] 객체 직렬화 ObjectInputStream / ObjectOutputStream (0) | 2019.08.07 |
[JAVA] I/O Char 와 Encoding (0) | 2019.08.07 |
[JAVA] I/O 입출력 클래스의 종류 (0) | 2019.08.07 |
[JAVA] 문자 Stream : FileReader / FileWriter (0) | 2019.08.07 |
[JAVA] 문자 Stream : InputStreamReader / OutputStreamWriter (0) | 2019.08.07 |
[JAVA] 문자 Stream : Reader / Writer (0) | 2019.08.07 |
[JAVA] ByteStream : DataInputStream / DataOutputStream (0) | 2019.08.07 |