java BufferedInputStream은 컴퓨터의 각 부품 별 성능 격차에 따른 처리 속도 저하를 줄이기 위해서 사용되며, 기존의 처리 방식인 프로그램이 입출력 소스와 직접 작업하는 방법과 달리 중간에 메모리 버퍼와 함께 작업을 진행해 처리 시간을 단축시킬 수 있다.
- 예제 1 – 스트림 데이터 출력
import java.io.BufferedInputStream;
import java.io.FileInputStream;
public class example2 {
public static void main(String[] args) {
try {
FileInputStream fis = new FileInputStream("c:/temp/test.txt");
BufferedInputStream bis = new BufferedInputStream(fis);
byte[] byteBuff = new byte[9999];
int nRLen = bis.read(byteBuff);
String strBuff = new String(byteBuff, 0, nRLen);
System.out.printf("읽은 바이트수[%d] : \n읽은 내용 %s \n", nRLen, strBuff);
bis.close();
fis.close();
} catch (Exception e) {
System.out.println("파일이 없습니다!.\n");
System.out.println("c:/temp/test.txt\n");
}
}
}
실행 결과
실행 결과 글자가 깨지긴 했어도 잘 읽어온 것을 확인할 수 있다.
스트림은 입력 소스로부터 자신의 내부 버퍼 크기만큼 데이터를 먼저 읽고 버퍼에 저장한다.
생성자 매개값으로 준 입력 스트림과 연결되어 8918 내부 버퍼 사이즈를 갖는다.
BufferedInputStream bis = new BufferedInputStream(“C:/temp/test.PNG”) 예제로 보여줄 이미지의 바이트 스트림은 8918을 넘지 않는다.
- 예제 2 – 이미지를 읽는데 걸리는 시간 비교
import java.io.BufferedInputStream;
import java.io.FileInputStream;
public class BufferdInputStreamDefault {
public static void main(String[] args) throws Exception{
long start = 0;
long end = 0;
FileInputStream fis1 = new FileInputStream("C:/temp/test.PNG");
start = System.currentTimeMillis();
while(fis1.read() != -1) {}
end = System.currentTimeMillis();
System.out.println("BufferdInputStream을 사용하지 않았을 때 걸린 시간: " + (end-start) + "ms");
fis1.close();
FileInputStream fis2 = new FileInputStream("C:/temp/test.PNG");
BufferedInputStream bis = new BufferedInputStream(fis2);
start = System.currentTimeMillis();
while(bis.read() != -1) {}
end = System.currentTimeMillis();
System.out.println("BufferdInputStream을 사용했을 때 걸린 시간 : " + (end-start) + "ms");
bis.close();
fis2.close();
}
}
실행 결과
BufferInputStream을 사용했을 시 사용하지 않은 경우보다 60배 정도의 읽기 속도 차이를 보여준다. 생각보다 많다..
크기가 큰 데이터 스트림을 추가하게 된다면?
9.5GB ISO 파일을 추가했을 시 스트림 값을 읽어오지 못했다.
+ eclipse 인코딩 설정 방법
1. 상단 [Windows] -> [Preferences] -> [General] -> [Content Type] -> [Java Class File] -> 하단 Deault encoding “UTF-8” 입력 -> [Update] -> [OK]
2. [General] -> [Workspace] -> [Text file encoding] -> [Other”UTF-8″] 선택 -> [OK]
3. [General] -> [Editors] -> [Spelling] -> [Encoding”UTF-8 선택”] -> [OK]
4. [Web] -> [CSS File] -> [Encoding “ISO 10646/Unicode(UTF-8) 선택”] -> [OK]
5. [Web] -> [HTML Files] -> [Encoding “ISO 10646/Unicode(UTF-8) 선택”] -> [OK]
6. [Web] -> [JSP File] -> [Encoding “ISO 10646/Unicode(UTF-8) 선택”] -> [OK]
7. [XML] -> [XML Files] -> [Encoding “ISO 10646/Unicode(UTF-8) 선택”] -> [OK]