프로그래머스/Java

[Java 문법] I/O Stream

annovation 2025. 2. 24. 08:50

I/O Stream

  • 자바(Java)는 파일 읽기와 쓰기, 네트워크 통신 등 데이터를 다룰 때 I/O Stream(입출력 스트림)을 사용합니다.
  • I/O는 "Input/Output"의 약자로, 데이터를 입력하거나 출력하는 작업을 뜻합니다.
  • Stream은 데이터를 한 방향으로 흐르게 하는 통로라고 생각하면 쉽습니다. 예를 들어, 수도관을 통해 물이 흐르듯, 데이터도 스트림을 통해 한쪽에서 다른 쪽으로 이동합니다.

 

1. Input Stream

  • 외부로부터 데이터를 읽어오는 통로
  • ex. 파일에서 텍스트 읽기, 키보드 입력받기

2. Output Stream

  • 데이터를 외부로 내보내는 통로
  • ex. 파일에 데이터 쓰기, 화면에 텍스트 출력하기

특징

  1. 스트림은 순차적으로 데이터 처리
    • 스트림은 데이터를 순차적으로 한 바이트 또는 한 문자씩 처리합니다.
    • 이를 통해 데이터 크기에 상관없이 작은 메모리로 효율적으로 작업할 수 있습니다.
  2. 계층적 구조
    • 자바의 I/O는 클래스와 인터페이스로 이루어진 계층적 구조를 가지고 있습니다. 이를 통해 필요한 기능을 유연하게 조합할 수 있습니다.
    • ex. FileInputStream은 파일에서 바이트를 읽는 스트림이고, BufferedInputStream은 읽는 속도를 높이기 위해 데이터에 버퍼를 추가한 스트림입니다.

출처 : https://www.tutorialspoint.com/java/java_files_io.htm


종류

1. 바이트 스트림 (Byte Stream)

  • 데이터를 1바이트씩 처리
  • 주로 바이너리 데이터(이미지, 동영상 등)나 파일을 다룰 때 사용
  • 클래스 : InputStream, OutputStream (추상 클래스), FileInputStream, FileOutputStream 
FileInputStream fis = new FileInputStream("example.txt");
int data;
while ((data = fis.read()) != -1) {
    System.out.print((char) data);
}
fis.close();

 

2. 문자 스트림 (Character Stream)

  • 데이터를 2바이트(문자 단위)로 처리
  • 텍스트 데이터를 다룰 때 적합
  • 클래스 : Reader, Writer (추상 클래스), FileReader, FileWriter 
FileReader fr = new FileReader("example.txt");
int data;
while ((data = fr.read()) != -1) {
    System.out.print((char) data);
}
fr.close();

 

3. 버퍼 스트림 (Buffered Stream)

  • 데이터를 한 번에 묶어서 처리하여 속도 향상
  • 바이트와 문자 스트림 모두에 적용 가능
  • 클래스 : BufferedInputStream, BufferedOutputStream, BufferedReader, BufferedWriter 
BufferedReader br = new BufferedReader(new FileReader("example.txt"));
String line;
while ((line = br.readLine()) != null) {
    System.out.println(line);
}
br.close();

요약

I/O Stream은 데이터를 입력받거나 출력할 때 사용하는 통로이다.


출처

1. OpenAI ChatGPT (https://openai.com)

2. 이미지 : https://www.tutorialspoint.com/java/java_files_io.htm

 

Java - Files and I/O

Java - Files and I/O - The java.io package contains nearly every class you might ever need to perform input and output (I/O) in Java. All these streams represent an input source and an output destination. The stream in the java.io package supports many dat

www.tutorialspoint.com