본문 바로가기
Programming/Java

[Java]File 읽기/Read (FileInputStream, BufferedInputStream)

by 빅경 2024. 6. 8.
728x90
반응형

 

InputStream은 Java에서 바이트 기반의 입력 스트림을 나타내는 추상 클래스입니다. 이 클래스는 파일, 네트워크 연결, 메모리 버퍼 등 다양한 데이터 소스로부터 바이트 데이터를 읽는 데 사용됩니다. InputStream의 구체적인 서브클래스로는 FileInputStream, BufferedInputStream, ByteArrayInputStream, SocketInputStream 등이 있습니다.

  • int read(byte[] b):
    • 입력 스트림에서 주어진 바이트 배열 b에 데이터를 읽습니다. 읽은 바이트 수를 반환하며, 더 이상 읽을 데이터가 없으면 -1을 반환합니다.
  • int read(byte[] b, int off, int len):
    • 입력 스트림에서 주어진 바이트 배열 b의 특정 위치 off부터 len 길이만큼 데이터를 읽습니다. 읽은 바이트 수를 반환하며, 더 이상 읽을 데이터가 없으면 -1을 반환합니다.
  • void close():
    • 입력 스트림을 닫고 관련된 모든 시스템 자원을 해제합니다.
  • long skip(long n):
    • 입력 스트림에서 주어진 바이트 수 n만큼 건너뜁니다. 실제로 건너뛴 바이트 수를 반환합니다.

BufferedInputStream

BufferedInputStream은 InputStream의 서브클래스로, 버퍼를 사용하여 입력 스트림에서 효율적으로 데이터를 읽습니다. 작은 크기의 읽기 작업이 많을 경우 성능이 향상됩니다.

import java.io.BufferedInputStream;
import java.io.FileInputStream;
import java.io.IOException;
import java.io.InputStream;

public class BufferedInputStreamExample {
    public static void main(String[] args) {
        String filePath = "example.txt";
        try (InputStream inputStream = new BufferedInputStream(new FileInputStream(filePath))) {
            byte[] buffer = new byte[1024];
            int bytesRead = inputStream.read(buffer);
            while (bytesRead != -1) {
                System.out.write(buffer, 0, bytesRead);
                bytesRead = inputStream.read(buffer);
            }
        } catch (IOException e) {
            e.printStackTrace();
        }
    }
}
728x90
반응형