자바 입출력 공부중에 이해가 안가는 부분이 있어 질문드립니다....
버퍼 스트림이라는게 기본 스트림에 보조적으로 적용해서
데이터를 한번에 모았다가 처리하는 거다... 라고 책에는 나와있는데 이게 괜히 헷갈리네요.
a라는 텍스트 파일에 임의의 문장이 입력되어 있다고 할때,
FileInputStream fis = new FileInputStream("src/ch17/files/a.txt");
FileOutputStream fos = new FileOutputStream("src/ch17/files/b.txt");
int buf;
while((buf = fis.read())!=-1){
System.out.print((char)buf);
fos.write(buf);
}
fis.close();
fos.close();
이렇게 첫번째 코드와
FileInputStream fis= new FileInputStream("src/ch17/files/a.txt");
BufferedInputStream bin = new BufferedInputStream(fis);
FileOutputStream fos = new FileOutputStream("src/ch17/files/b.txt");
BufferedOutputStream bout = new BufferedOutputStream(fos);
int buf;
while((buf=bin.read())!=-1){
System.out.print((char)buf);
bout.write(buf);
}
bin.close();
bout.close();
버퍼 스트림을 적용시킨 두번째 코드가 있는데요.
출력은 별 차이없이 똑같은 모양으로 나오는데, 이 원리가 헷갈리네요.
첫번째 코드는 반복적으로 한바이트씩 글자를 읽어들여서 출력을 하는거고,
두번째 코드는 데이터를 한번에 모았다가 출력을 한다는 얘기인데,
사실상 반복문을 보면 위나 아래나 한글자씩 읽어서 출력을 하는건 똑같은 거 같은데 말이죠....
정확히 메모리상에서 이게 어떤 원리로 작동을 하는건지 모르겠네요.
조금 알려주시면 감사하겠습니다.... ㅠㅠ