지금까지의 파일 입출력 클래스들은 파일을 직접 읽거나 쓸때마다 직접 하드에(보조기억장치) 접근하기 때문에 성능을 저하시킬 수 있다.
기억장치에 접근하는것 자체가 성능을 떨어뜨리는 주요 원인
이런 문제를 해결하기 위해 나온것이 버퍼.
데이터를 읽거나 쓸때 버퍼를 이용하여 한번에 읽고, 한번에 출력하는 방식
즉, 빈번한 하드 디스크 접근을 막아 속도를 향상
- BufferedInputStream, BuffredOutputStream : 바이트 단위로 읽고 쓴다
- BufferedReader, BufferedWriter : 문자를 읽고 쓴다
BufferedInputStream, BuffredOutputStream
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 | import java.io.BufferedInputStream; import java.io.BufferedOutputStream; import java.io.File; import java.io.FileInputStream; import java.io.FileNotFoundException; import java.io.FileOutputStream; import java.io.IOException; public class Example { public static void main(String[] args) { File file = new File("anse//java"); try { byte[] receive = { 'A', 'S', 'C', 'D' }; FileOutputStream fos = new FileOutputStream(file); FileInputStream fis = new FileInputStream(file); BufferedOutputStream bos = new BufferedOutputStream(fos, 1024); // 1024가 모여야 보조기억장치에 접근할 수있음 bos.write(receive); BufferedInputStream bis = new BufferedInputStream(fis, 1024); bis.read(receive); for (int i = 0; i < receive.length; i++) { System.out.printf("%c", receive[i]); // ASCD 출력 } bis.close(); bos.close(); fos.close(); } catch (FileNotFoundException e) { // TODO Auto-generated catch block e.printStackTrace(); } catch (IOException e) { // TODO Auto-generated catch block e.printStackTrace(); } } } | cs |
BufferedReader, BufferedWriter
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 | import java.io.BufferedReader; import java.io.BufferedWriter; import java.io.File; import java.io.FileReader; import java.io.FileWriter; import java.io.IOException; public class Example { public static void main(String[] args) { File file = new File("anse//java"); try { // 쓰고 FileWriter fw = new FileWriter(file); BufferedWriter bw = new BufferedWriter(fw, 1024); bw.write("test g2ogo"); // 읽고 FileReader fr = new FileReader(file); BufferedReader br = new BufferedReader(fr, 1024); System.out.println(br.readLine()); br.close(); fr.close(); bw.close(); fw.close(); } catch (IOException e) { // TODO Auto-generated catch block e.printStackTrace(); } } } | cs |
'DEV > JAVA' 카테고리의 다른 글
[java] Socket 통신 기본문법 (0) | 2019.10.10 |
---|---|
io_5 : 총 13개 클래스 정리 (0) | 2019.10.08 |
io_3 : ObjectInputStream, ObjectOutputStream , 직렬화 (serialization ) (0) | 2019.10.08 |
io_2 : DataInputStream, DataOutputStream (0) | 2019.10.07 |
io_1 : File, FileReader, FileWriter, FileInputStream, FileOutputStream (0) | 2019.10.07 |