12. I/O 입출력

Java에서 입출력(I/O)은 데이터를 읽고 쓰는 작업을 의미합니다. Java는 다양한 클래스와 메서드를 제공하여 파일, 네트워크, 표준 입력 및 출력 등 다양한 소스와 대상으로의 I/O 작업을 처리할 수 있습니다. Java의 I/O는 java.io 패키지에서 제공됩니다.

Java의 I/O는 크게 두 가지 유형으로 나뉩니다

1. 바이트 기반 I/O (Byte-based I/O)

  • 바이트 기반 I/O는 데이터를 바이트 단위로 처리하는 방식입니다.

  • InputStreamOutputStream 클래스를 사용하여 바이트 스트림 입출력을 처리합니다.

  • 주요 클래스로는 FileInputStream, FileOutputStream, BufferedInputStream, BufferedOutputStream 등이 있습니다.

예시

javaCopy codeFileInputStream fis = new FileInputStream("input.txt");
int data;
while ((data = fis.read()) != -1) {
    // 데이터 처리
}
fis.close();

2. 문자 기반 I/O (Character-based I/O)

  • 문자 기반 I/O는 문자 단위로 처리하는 방식입니다. Java는 Unicode 문자를 사용하므로 문자 기반 I/O는 문자 인코딩을 고려합니다.

  • ReaderWriter 클래스를 사용하여 문자 스트림 입출력을 처리합니다.

  • 주요 클래스로는 FileReader, FileWriter, BufferedReader, BufferedWriter 등이 있습니다.

예시

javaCopy codeFileReader fr = new FileReader("input.txt");
BufferedReader br = new BufferedReader(fr);
String line;
while ((line = br.readLine()) != null) {
    // 데이터 처리
}
br.close();

또한 Java는 다양한 I/O 클래스를 제공하여 네트워크 통신, 객체 직렬화, 압축 등 다양한 I/O 작업을 지원합니다. 몇 가지 예시로는 Socket, ServerSocket, ObjectInputStream, ObjectOutputStream, ZipInputStream, ZipOutputStream 등이 있습니다.

I/O 작업을 수행할 때는 예외 처리와 자원 해제에 주의해야 합니다. 예외 처리는 try-catch-finally 블록을 사용하여 예외를 처리하고, 자원 해제는 close() 메서드를 호출하여 스트림을 닫아야 합니다. Java 7부터는 try-with-resources 문을 사용하여 자원을 자동으로 해제할 수 있습니다.

Java의 I/O 기능은 다양한 데이터 소스와 대상으로의 입출력 작업을 효율적으로 처리할 수 있도록 도와줍니다. I/O를 사용하여 파일 읽기/쓰기, 네트워크 통신, 데이터 처리 등 다양한 작업을 수행할 수 있습니다.

Last updated