보조스트림 :
다른 스트림과 연결 되어 스트림의 기능을 향상 시키거나 새로운 기능을 추가 할 수 있는 스트림이다. 보완하는 용도이기 때문에 실제로 데이터를 주고 받지 않고 데이터를 입출력 할 수 있는 기능은 없다.
1차 스트림(기본 스트림) : 단독으로 사용가능하다.
2차 스트림(보조 스트림) : 기본 스트림과 연결해야 사용 가능하고 기본 스트림에 기능을 추가하기 위해 사용 한다.
기본 스트림 + 보조 스트림 > 서로 타입이 맞아야 사용가능하다.
읽기끼리, 쓰기끼리, 바이트 단위끼리, 문자단위 끼리 등 상성을 가진 것 끼리 연결 가능하다.
① Buffered 보조 스트림 : 속도 빠르게
버퍼는 입력받은 값은 버퍼에 저장해두었다가 버퍼가 가득차거나 개행 문자가 나타나면 버퍼의 내용을 한 번에 전송한다.
바이트 단위 스트림 : FileInputStream + BufferedInputStream / FileOutputStream + BufferedOutputStream
문자 단위 스트림 : FileReader + BufferedReader / FileWriter + BufferedWriter
보조스트림의 파라미터로 기본 스트림을 받아와 사용 하는 것이다. 생성은 기본스트림을 먼저 해 준 후 생성 해 주고 사용이 끝났다면 기본 스트림과 같이 .close() 해줘야 한다.
package 입출력;
import java.io.BufferedInputStream;
import java.io.BufferedOutputStream;
import java.io.BufferedReader;
import java.io.BufferedWriter;
import java.io.FileInputStream;
import java.io.FileNotFoundException;
import java.io.FileOutputStream;
import java.io.FileReader;
import java.io.FileWriter;
import java.io.IOException;
public class 보조스트림테스트1 {
public static void main(String[] args) {
// TODO Auto-generated method stub
try {
// BufferedInputStream
FileInputStream fi = new FileInputStream("src/입출력/files/a.txt");
BufferedInputStream bi = new BufferedInputStream(fi);
int ch;
while ((ch = bi.read()) != -1) {
System.out.println((char) ch);
}
bi.close();
fi.close();
// BufferedOutputStream
FileOutputStream fo = new FileOutputStream("src/입출력/files/b.txt");
BufferedOutputStream bo = new BufferedOutputStream(fo);
for (int i = 'a'; i <= 'z'; i++) {
bo.write(i);
}
bo.close();
fo.close();
// BufferedReade
FileReader fr = new FileReader("src/입출력/files/a.txt");
BufferedReader br = new BufferedReader(fr);
int cha;
while ((cha = br.read()) != -1) {
System.out.print((char) cha);
}
br.close();
fr.close();
// BufferedWriter
FileWriter fw = new FileWriter("src/입출력/files/b.txt");
BufferedWriter bw = new BufferedWriter(fw);
for (int i = 'A'; i <= 'Z'; i++) {
bw.write((char) i);
}
bw.close();
fw.close();
} catch (FileNotFoundException e) {
// TODO Auto-generated catch block
e.printStackTrace();
} catch (IOException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
}
}
'JAVA' 카테고리의 다른 글
[JAVA] 입출력 스트림 ④ 보조스트림 _ 바이트를 문자로 (0) | 2023.03.13 |
---|---|
[JAVA] 입출력 스트림 ④ 보조스트림 _ Object (0) | 2023.03.13 |
[JAVA] 입출력 스트림 ③ 문자 단위 스트림 _ 입출력 (0) | 2023.03.11 |
[JAVA] 입출력 스트림 ② 바이트 단위 스트림 _ 출력 (0) | 2023.03.11 |
[JAVA] 입출력 스트림 ② 바이트 단위 스트림 _ 입력 (0) | 2023.03.10 |