이전글:
2020/12/12 - [JAVA] - 바이트 단위 문자 입출력
이번엔 바이트 단위가 아니라 문자 단위로 스트림을 해보겠습니다.
여기서 점점 느끼셨겟지만 바이트 -> 문자 이런식으로 변화한다고 느꼈을겁니다.
즉 다음에 알려드릴 보조 스트림에 관련한건데요
아래 링크에서 보조 스트림에 대해 간략한 설명이 있는데요
말그대로 파일을 여는 바이트 스트림의 보조 스트림을 통해서 문자형식으로 읽거나 쓸수 있게됩니다.
이러한 방식은 나중에 배울 데코레이션 디자인패턴 방식이라고 합니다.
이전글:
Reader : 문자 단위로 읽는 최상위 스트림
Writer: 문자 단위로 쓰는 최상위 스트림
추상 메서드를 포함한 추상클래스로 하위 클래스가 상속받아 구현
아래 코드를 보시면 간단한 예제 코드입니다.
그렇다면 전부다 보지말고 간단한 예시 코드 한쪽만 쪼개서 확인해보겠습니다.
package Test01;
import java.io.FileInputStream;
import java.io.FileNotFoundException;
import java.io.FileOutputStream;
import java.io.FileReader;
import java.io.FileWriter;
import java.io.IOException;
import java.io.InputStreamReader;
public class Main {
public static void main(String [] args) throws IOException {
System.out.println("");
System.out.println("===============read==================");
System.out.println("");
FileInputStream fis=new FileInputStream("reader.txt"); //byte read
InputStreamReader isr=new InputStreamReader(fis);//보조 스트림 byte를 문자로 바꿔줌
int i;
while((i=isr.read())!=-1) {
System.out.print((char)i);
}
fis.close();
System.out.println("");
System.out.println("=======================================");
System.out.println("");
FileReader fir=new FileReader("reader.txt");
int k;
while((k=fir.read())!=-1) {
System.out.print((char)k);
}
fir.close();
System.out.println("");
System.out.println("================writer=================");
System.out.println("");
FileWriter fw=new FileWriter("writer.txt");
fw.write('A');
char[] buf= {'B','C','D','E','F'};
fw.write(buf);
fw.write("안녕하세용");
fw.write(buf,2,2);
fw.close();
System.out.println("end");
}
}
아래 코드를 보시면
read.txt를 FileInputStream을 통해서 읽어옵니다. 즉 read byte 단위로 읽어온셈이죠
그렇다면 이를 문자로 바꿔주기위해서 InputStreamReader로 읽어옵니다
그렇게 되면 byte 단위들이 문자로 변경되어 출력이 가능합니다.
write도 이와 마찬가지입니다.
System.out.println("===============read==================");
System.out.println("");
FileInputStream fis=new FileInputStream("reader.txt"); //byte read
InputStreamReader isr=new InputStreamReader(fis);//보조 스트림 byte를 문자로 바꿔줌
int i;
while((i=isr.read())!=-1) {
System.out.print((char)i);
}
fis.close();
'프로그래밍언어 > JAVA' 카테고리의 다른 글
<JAVA>직렬화 (0) | 2020.12.13 |
---|---|
<JAVA>보조 스트림 (0) | 2020.12.12 |
<JAVA>바이트 단위 문자 입출력 (0) | 2020.12.12 |
<JAVA>표준입출력 (0) | 2020.12.12 |
<JAVA>입출력 스트림 (0) | 2020.12.12 |