JAVA/포스팅

자바 InputStream

짜집퍼박사(짜박) 2023. 11. 25. 23:28

자바의 InputStream은 바이트 기반 입력 스트림을 나타내는 추상 클래스입니다. 이 클래스는 바이트 단위로 데이터를 읽을 수 있는 메서드를 정의하고 있습니다. InputStream은 추상 클래스이므로 직접 인스턴스를 생성하여 사용하는 것이 아니라, 이를 상속받아 구현한 구체적인 클래스들을 사용합니다.

주요 InputStream 하위 클래스들과 이들의 주요 메서드에 대해 알아보겠습니다.

 

1. FileInputStream

파일에서 바이트 단위로 데이터를 읽는 데 사용됩니다.

try (FileInputStream fis = new FileInputStream("example.txt")) {
    int data;
    while ((data = fis.read()) != -1) {
        // 읽은 데이터 처리
    }
} catch (IOException e) {
    e.printStackTrace();
}

 

2. ByteArrayInputStream

바이트 배열에서 데이터를 읽는 데 사용됩니다.

byte[] byteArray = {65, 66, 67}; // ASCII values for 'A', 'B', 'C'

try (ByteArrayInputStream bais = new ByteArrayInputStream(byteArray)) {
    int data;
    while ((data = bais.read()) != -1) {
        // 읽은 데이터 처리
    }
} catch (IOException e) {
    e.printStackTrace();
}

 

3. BufferedInputStream

성능 향상을 위해 버퍼링을 제공하는 보조 스트림입니다.

try (BufferedInputStream bis = new BufferedInputStream(new FileInputStream("example.txt"))) {
    int data;
    while ((data = bis.read()) != -1) {
        // 읽은 데이터 처리
    }
} catch (IOException e) {
    e.printStackTrace();
}

 

4. DataInputStream

기본 자료형 데이터를 바이트 단위로 읽는 데 사용됩니다.

try (DataInputStream dis = new DataInputStream(new FileInputStream("data.bin"))) {
    int intValue = dis.readInt();
    double doubleValue = dis.readDouble();
    // 읽은 데이터 처리
} catch (IOException e) {
    e.printStackTrace();
}

 

5. ObjectInputStream

객체를 바이트 단위로 읽는 데 사용됩니다. 주로 직렬화된 객체를 읽을 때 활용됩니다.

try (ObjectInputStream ois = new ObjectInputStream(new FileInputStream("object.bin"))) {
    Object obj = ois.readObject();
    // 읽은 객체 처리
} catch (IOException | ClassNotFoundException e) {
    e.printStackTrace();
}

 

6. SequenceInputStream

두 개의 입력 스트림을 연결하여 하나의 스트림처럼 처리할 수 있게 합니다.

try (FileInputStream fis1 = new FileInputStream("file1.txt");
     FileInputStream fis2 = new FileInputStream("file2.txt");
     SequenceInputStream sis = new SequenceInputStream(fis1, fis2)) {

    int data;
    while ((data = sis.read()) != -1) {
        // 읽은 데이터 처리
    }
} catch (IOException e) {
    e.printStackTrace();
}

이렇게 InputStream을 활용하여 다양한 소스에서 바이트 단위로 데이터를 읽을 수 있습니다. 종종 보조 스트림과 함께 사용하여 성능을 향상시키거나 특정 기능을 추가할 수 있습니다.

 

With ChatGPT

'JAVA > 포스팅' 카테고리의 다른 글

자바 ByteArrayInputStream  (0) 2023.11.25
자바 OutputStream  (0) 2023.11.25
자바 문자기반 스트림  (0) 2023.11.25
자바 보조스트림  (0) 2023.11.25
자바 바이트기반 스트림  (0) 2023.11.25