FileInputStream
FileInputStream 은 파일을 읽을 때 버퍼링 없이 직접 파일에서 데이터를 읽는다. 파일 시스템에서 매번 직접 가져오기 때문에 I/O 접근이 많아 성능이 다소 느릴 수 있다.
매번 파일에서 데이터를 읽기 위해 파일 시스템과의 통신이 필요하기 때문에 CPU가 더 많은 작업을 한다. 이 과정에서 불필요한 오버헤드가 발생하여 CPU 사용량이 높아 질 수 있다.
InputStream inputStream = new InputStream(file);
BufferedInputStream
BufferedInputStream 은 내부 버퍼를 사용하여 파일을 읽어 올 때 한번에 여러 바이트를 읽어온다. 읽어온 버퍼를 통해 데이터를 제공하며 파일 시스템에 대한 I/O 호출을 줄일 수 있다.
버퍼가 채워지면 파일 시스템에서 추가 데이터를 읽기 전에 버퍼에 저장된 데이터를 먼저 처리한다. 즉, 파일 시스템과의 상호작용이 줄어들고 I/O 호출이 적어지므로, CPU의 작업 부담도 줄어든다.
InputStream inputStream = new BufferedInputStream(new FileInputStream(file));
'Java' 카테고리의 다른 글
ZipOutputStream vs ZipArchiveOutputStream (3) | 2024.11.08 |
---|---|
JDK Dynamic Proxy와 CGLIB (0) | 2024.07.30 |
Java Collections Framework (0) | 2020.03.25 |
(Java) JVM 메모리 구조 (0) | 2020.03.18 |
(Java) 객체지향 프로그래밍 (0) | 2020.03.18 |