보조스트림
Buffered~
BufferedOutputStream: T11
- 바이트 기반
- 입출력 성능 향상을 위해서 버퍼를 이용하는 보조스트림
- 버퍼의 크기를 지정하지 않으면 기본적으로 버퍼의 크기가 8192(8kb)로 설정됨
FileOutputStream fos = null;
BufferedOutputStream bos = null;
try {
fos = new FileOutputStream("d:/D_Other/bufferTest.txt");
bos = new BufferedOutputStream(fos, 5);
for (int i = '1'; i <= '9'; i++) {
bos.write(i);
}
bos.close();
System.out.println("작업 끝...");
} catch (IOException e) {
e.printStackTrace();
}
BufferedReader: T12
try{
FileReader fr = new FileReader("./src/kr/or/ddit/basic/T11_BufferedIOTest.java");
BufferedReader br = new BufferedReader(fr);
String temp = "";
for (int i = 1; (temp=br.readLine()) != null; i++) {
System.out.printf("%4d : %s\n", i, temp);
}
} catch (Exception e) {
}
DataOutputStream
try{
FileOutputStream fos = new FileOutputStream("d:/D_Other/test.data");
DataOutputStream dos = new DataOutputStream(fos);
dos.writeUTF("홍길동");
dos.writeInt(17);
dos.writeFloat(3.14f);
dos.writeDouble(3.14);
dos.writeBoolean(true);
System.out.println("출력 완료...");
dos.close();
FileInputStream fis = new FileInputStream("d:/D_Other/test.data");
DataInputStream dis = new DataInputStream(fis);
System.out.println("문자열 자료 : " + dis.readUTF());
System.out.println("정수형 자료 : " + dis.readInt());
System.out.println("실수형(Float) 자료 : " + dis.readFloat());
System.out.println("실수형(Double) 자료 : " + dis.readDouble());
System.out.println("논리형 자료 : " + dis.readBoolean());
dis.close();
} catch (IOException e) {
e.printStackTrace();
}
PrintStream & PrintWrite
PrintStream
- 모든 자료형을 출력할 수 있는 기능을 제공하는 OutputStream의 서브클래스
- IOException을 발생시키지 않는다
- println, print 등 메서드 호출시마다 auto-flush 기능이 제공된다
- 데이터를 문자로 출력하는 기능을 수행함
- 향상된 기능의 PrintWriter가 추가되었지만 PrintStream이 계속 사용됨
FileOutputStream fos = new FileOutputStream("d:/D_Other/print.txt");
FileOutputStream fos2 = new FileOutputStream("d:/D_Other/print2.txt");
PrintStream out = new PrintStream(fos);
out.print("안냐심까. PrintStream 이올시다.\n");
out.println("안냐심까. PrintStream 이올시다2.");
out.println("안냐심까. PrintStream 이올시다3.");
out.println(out);
out.println(3.14);
out.close();
PrintWriter
- PrintWriter가 PrintSream보다 다양한 언어의 문자를 처리하는데 적합하다.
- 둘 다 기본적으로 auto-flush 기능이 꺼져있음
PrintWriter writer = new PrintWriter(new OutputStreamWriter(fos2, "UTF-8"));
writer.print("안냐심까. PrintWriter 입니다.\r\n");
writer.println("안냐심까. PrintWriter 입니다.2");
writer.println("안냐심까. PrintWriter 입니다.3");
writer.close();