언어 및 도구들 공부/Java

Stream 3

Dr.Mlem 2024. 9. 28. 17:38

Ex03_파일저장, Ex04_파일읽기, Ex05_Helper테스트, Ex06_Helper테스트2 파일들을 통해서 설명받고 싶은게, stream 이란 개념이 뭐야?



스트림(Stream)은 데이터의 흐름을 의미하며, 데이터를 읽고 쓰는 데 사용되는 추상화된 개념입니다. 스트림은 연속적인 데이터의 흐름을 처리하는 데 사용되며, 파일, 네트워크 소켓, 메모리 등 다양한 데이터 소스와 목적지에서 데이터를 읽고 쓸 수 있습니다.

Java에서 스트림은 크게 두 가지 유형으로 나뉩니다:

바이트 스트림 (Byte Stream): 바이트 단위로 데이터를 처리합니다. 주로 파일 I/O와 같은 바이너리 데이터를 처리할 때 사용됩니다.
문자 스트림 (Character Stream): 문자 단위로 데이터를 처리합니다. 주로 텍스트 데이터를 처리할 때 사용됩니다.
바이트 스트림
InputStream: 바이트 단위로 데이터를 읽는 데 사용됩니다.
OutputStream: 바이트 단위로 데이터를 쓰는 데 사용됩니다.
문자 스트림
Reader: 문자 단위로 데이터를 읽는 데 사용됩니다.
Writer: 문자 단위로 데이터를 쓰는 데 사용됩니다.
예제 파일 설명
Ex03_파일저장.java
이 파일에서는 문자열 데이터를 바이트 배열로 변환하여 파일에 저장하는 과정을 다룹니다. 여기서 스트림은 데이터를 파일에 쓰는 데 사용됩니다.

Ex04_파일읽기.java
이 파일에서는 파일에서 데이터를 읽어 바이트 배열에 저장하는 과정을 다룹니다. 여기서 스트림은 파일에서 데이터를 읽는 데 사용됩니다.

Ex05_Helper테스트.java & Ex06_Helper테스트2.java
이 파일들은 스트림을 사용하여 데이터를 읽고 쓰는 기능을 테스트하는 데 사용됩니다. 스트림을 통해 파일 I/O 작업을 수행하고, 그 결과를 검증합니다.

스트림의 사용 예제
다음은 파일에 데이터를 쓰고 읽는 간단한 예제입니다.

파일에 데이터 쓰기 (바이트 스트림)

import java.io.FileOutputStream;
import java.io.IOException;

public class WriteExample {
    public static void main(String[] args) {
        String content = "Hello, World!";
        try (FileOutputStream fos = new FileOutputStream("example.txt")) {
            byte[] buffer = content.getBytes("UTF-8");
            fos.write(buffer);
        } catch (IOException e) {
            e.printStackTrace();
        }
    }
}

파일에서 데이터 읽기 (바이트 스트림)

import java.io.FileInputStream;
import java.io.IOException;

public class ReadExample {
    public static void main(String[] args) {
        try (FileInputStream fis = new FileInputStream("example.txt")) {
            byte[] buffer = new byte[fis.available()];
            fis.read(buffer);
            String content = new String(buffer, "UTF-8");
            System.out.println(content);
        } catch (IOException e) {
            e.printStackTrace();
        }
    }
}

이 예제들은 스트림을 사용하여 파일에 데이터를 쓰고 읽는 기본적인 방법을 보여줍니다. 스트림은 데이터를 처리하는 데 매우 유용한 도구이며, 다양한 데이터 소스와 목적지에서 데이터를 효율적으로 처리할 수 있게 해줍니다.

'언어 및 도구들 공부 > Java' 카테고리의 다른 글

Retrofit 라이브러리  (0) 2024.09.30
Java lombok 라이브러리  (0) 2024.09.30
buffer 5  (0) 2024.09.28
buffer 4  (0) 2024.09.28
Stream 2  (0) 2024.09.28