본문 바로가기
Java

FileInputStream vs BufferedInputStream

by J_Remind 2024. 11. 3.

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