본문 바로가기
GD's IT Lectures : 기초부터 시리즈/자바(JAVA) 기초부터 ~

[자바(JAVA)] 입출력 (I/O)

by GDNGY 2023. 4. 28.

18. 입출력 (I/O)

18.1. 입출력 스트림 개념

자바에서 입출력(I/O)은 데이터를 읽고 쓰는 작업을 처리하는 데 사용됩니다. 자바는 입출력을 위한 스트림(Stream)이라는 개념을 도입하여, 데이터를 읽고 쓰는 작업을 추상화하여 처리합니다. 스트림은 단방향 통신 채널로, 입력 스트림은 데이터를 읽는 작업을, 출력 스트림은 데이터를 쓰는 작업을 수행합니다.

 

18.2. 바이트 스트림 (InputStream, OutputStream)

바이트 스트림은 바이트 단위로 데이터를 처리하는 입출력 스트림입니다. InputStream과 OutputStream은 바이트 스트림의 기본 클래스로, 주로 바이너리 파일이나 네트워크 통신 등 바이트 단위의 데이터 처리에 사용됩니다. 대표적인 하위 클래스로 FileInputStream, FileOutputStream, BufferedInputStream, BufferedOutputStream 등이 있습니다.

 

// 파일에서 바이트 읽기
InputStream is = new FileInputStream("input.txt");
int data;
while ((data = is.read()) != -1) {
    System.out.print((char) data);
}
is.close();

// 파일에 바이트 쓰기
OutputStream os = new FileOutputStream("output.txt");
os.write("Hello, Byte Stream!".getBytes());
os.close();

 

18.3. 문자 스트림 (Reader, Writer)

문자 스트림은 문자 단위로 데이터를 처리하는 입출력 스트림입니다. Reader와 Writer는 문자 스트림의 기본 클래스로, 주로 텍스트 파일이나 문자열 처리에 사용됩니다. 대표적인 하위 클래스로 FileReader, FileWriter, BufferedReader, BufferedWriter 등이 있습니다.

 

// 파일에서 문자 읽기
Reader reader = new FileReader("input.txt");
int data;
while ((data = reader.read()) != -1) {
    System.out.print((char) data);
}
reader.close();

// 파일에 문자 쓰기
Writer writer = new FileWriter("output.txt");
writer.write("Hello, Character Stream!");
writer.close();

 

18.4. 버퍼링, 데이터 입출력 스트림

버퍼링은 입출력 작업의 성능을 향상시키기 위해 사용되는 기술입니다. BufferedReader, BufferedWriter, BufferedInputStream, BufferedOutputStream 등의 버퍼링 클래스를 사용하여 입출력 작업을 처리할 수 있습니다.


데이터 입출력 스트림은 기본 데이터 타입을 처리하는 데 사용되는 입출력 스트림입니다. DataInputStream과 DataOutputStream 클래스를 사용하여 기본 데이터 타입을 읽고 쓸 수 있습니다.

 

// 버퍼링을 사용한 파일 읽기
BufferedReader br = new BufferedReader(new FileReader("input.txt"));
String line;
while ((line = br.readLine()) != null) {
    System.out.println(line); 
} 
br.close();

// 버퍼링을 사용한 파일 쓰기
BufferedWriter bw = new BufferedWriter(new FileWriter("output.txt"));
bw.write("Hello, Buffered Stream!");
bw.newLine();
bw.close();

// 데이터 입력 스트림을 사용한 기본 데이터 타입 읽기
DataInputStream dis = new DataInputStream(new FileInputStream("data_input.bin"));
int intValue = dis.readInt();
float floatValue = dis.readFloat();
dis.close();

// 데이터 출력 스트림을 사용한 기본 데이터 타입 쓰기
DataOutputStream dos = new DataOutputStream(new FileOutputStream("data_output.bin"));
dos.writeInt(42);
dos.writeFloat(3.14f);
dos.close();

이렇게 자바에서는 다양한 입출력 스트림을 제공하여, 데이터를 읽고 쓰는 작업을 간편하게 처리할 수 있습니다. 입출력 작업을 할 때에는 예외 처리가 중요하므로, try-with-resources 구문을 사용하여 자동으로 스트림이 닫히도록 하거나, try-catch-finally 구문을 사용하여 스트림을 닫는 작업을 처리해야 합니다.

 

▶ (try-with-resources 구문 사용)

// try-with-resources 구문을 사용한 자동 스트림 닫기
try (BufferedReader br = new BufferedReader(new FileReader("input.txt"))) {
    String line;
    while ((line = br.readLine()) != null) {
        System.out.println(line);
    }
} catch (IOException e) {
    e.printStackTrace();
}

이 강좌 자료를 통해 자바 입출력에 대한 기본적인 개념과 스트림의 사용법을 이해할 수 있습니다. 다양한 입출력 스트림을 활용하여 필요한 데이터 처리 작업을 수행해 보세요.

반응형

댓글