Reader
문자 단위로 읽는 스트림 중 최상위 스트림으로 다음 하위 클래스를 주로 사용한다.
FileReader 파일에서 문자 단위로 읽는 스트림 클래스
InputStreamReader 바이트 단위로 읽은 자료를 문자로 변환해주는 보조 스트림 클래스
BufferedReader 문자로 읽을때 배열을 제공하여 한꺼번에 읽을 수 있는 기능을 제공해주는 보조 스트림
자료를 읽는 메서드로 int 형을 반환하는 read() 메서드를 제공한다.
int read() | 파일로부터 한 문자를 읽고, 읽은 문자를 반환 |
int read(char[] buf) | 파일로부터 buf 배열에 문자를 읽음 |
int read(char[] buf, int off, int len) | 파일로부터 buf 배열의 off 위치에 len 개수만큼의 문자를 읽음 |
void close() | 입력 스트림과 연결된 대상 리소스를 닫음 |
FileReader
String name / File f (파일 이름/ 파일 클래스 정보를 매개변수로 받아 입력 스트림을 생성한다.)
만약 리더 스트림을 활용하지 않고 바위트 단위로 문자를 읽는다면 문자가 모두 깨지게 된다. 문자를 읽어올 때는 문자 스트림을 사용해야한다. FileReader로 문자를 읽어보자!
package stream;
import java.io.FileReader;
import java.io.IOException;
public class FileReaderTest {
public static void main(String[] args) throws IOException {
try(
FileReader fr = new FileReader("reader.txt")) {
int i;
while((i = fr.read()) != -1) {
System.out.println((char)i);
}
} catch (IOException e) {
e.printStackTrace();
}
}
}
Writer
- 문자 단위 출력 스트림 최상위 추상 클래스
- 많은 추상 메서드가 선언되어 있고 이를 하위 스트림이 상속받아 구현함
- 주요 하위 클래스
FileWriter | 파일에서 문자 단위로 출력하는 스트림 클래스 |
OutputStreamWriter | 바이트 단위의 자료를 문자로 변환해 출력해주는 보조 스트림 클래스 |
BufferedWriter | 문자로 쓸 때 배열을 제공하여 한꺼번에 쓸 수 있는 기능을 제공하는 보조 스트림 |
Writer 주요 메서드
int write(int c) | 한 문자를 파일에 씀 |
int write(char[] buf) | 문자 배열 buf의 내용을 씀 |
int write(char[] buf, int off, int len) | 문자 배열 buf의 off 위치에서부터 len 개수의 문자를 씀 |
int write(String str) | 문자열 str을 씀 |
int write(String str, int off, int len) | 문자열 str의 off 번째 문자로부터 len 개수만큼 씀 |
int flush() | 출력하기 전에 자료가 있는 공간(출력 버퍼)을 비워 출력 |
void close() | 스트림과 연결된 리소스를 닫습니다. 출력 버퍼도 비워짐 |
3. FileWriter 사용
파일에 문자를 써보자.
public class FileWriterTest {
public static void main(String[] args) {
try(FileWriter fw = new FileWriter("writer.txt")){
fw.write('A'); // 문자 하나 출력
char buf[] = {'B','C','D','E','F','G'};
fw.write(buf); // 문자 배열 출력
fw.write("안녕하세요. 잘 써지네요"); // String 출력
fw.write(buf, 1, 2); // 문자 배열의 일부 출력
fw.write("65"); // 숫자를 그대로 출력
}catch(IOException e) {
e.printStackTrace();
}
System.out.println("출력이 완료되었습니다.");
}
}
'공부 STUDY > JAVA' 카테고리의 다른 글
[JAVA] 직렬화 (Serialization ), 역직렬화 (Deserialization) (0) | 2023.01.24 |
---|---|
[JAVA] 보조 스트림(Wrapper 스트림)에 대해 알아보자 |FIilterInputStream, FilterOutputStream (0) | 2023.01.24 |
[JAVA] 자바 입출력과 스트림 - (3) | 바이트 단위 스트림 - OutputStream (0) | 2023.01.24 |
[JAVA] 자바 입출력과 스트림 - (2) | 바이트 단위 스트림 - InputStream (0) | 2023.01.24 |
[JAVA] 자바 입출력과 스트림 - (1) | scanner 클래스와 Console 클래스에대해 알아보자 (0) | 2023.01.23 |