Java를 배워보자/5. 입출력

자바 파일 입출력

_Blue_Sky_ 2024. 9. 27. 00:29
728x90
728x90

자바 파일 입출력: 상세 가이드

개요

자바에서 파일 입출력은 프로그램과 외부 저장 장치 간의 데이터 교환을 의미합니다. 즉, 프로그램에서 데이터를 파일로 저장하거나, 파일에서 데이터를 읽어와 프로그램에서 사용할 수 있도록 하는 것을 말합니다. 자바는 이러한 파일 입출력 기능을 위한 다양한 클래스와 메소드를 제공합니다.

왜 파일 입출력이 필요할까요?

  • 데이터 영구화: 프로그램 실행 중 생성된 데이터를 파일로 저장하여 프로그램 종료 후에도 데이터를 유지할 수 있습니다.
  • 대용량 데이터 처리: 메모리에 한 번에 올리기 어려운 대용량 데이터를 파일 단위로 읽고 처리할 수 있습니다.
  • 다른 프로그램과의 데이터 공유: 파일 형식으로 데이터를 저장하면 다른 프로그램에서도 해당 데이터를 읽어 사용할 수 있습니다.

자바 파일 입출력의 기본 개념

  • 스트림(Stream): 데이터를 순차적으로 읽거나 쓰는 추상적인 개념입니다. 자바에서는 입력 스트림과 출력 스트림으로 나눌 수 있습니다.
  • 바이트 스트림: 8비트 단위의 바이트 데이터를 처리하는 스트림입니다. 모든 종류의 데이터를 처리할 수 있습니다.
  • 문자 스트림: 문자 단위의 데이터를 처리하는 스트림입니다. 텍스트 파일을 읽고 쓰는 데 주로 사용됩니다.

파일 입출력 클래스

  • FileInputStream, FileOutputStream: 바이트 스트림 기반의 파일 입출력 클래스입니다.
  • FileReader, FileWriter: 문자 스트림 기반의 파일 입출력 클래스입니다.
  • BufferedInputStream, BufferedOutputStream: 버퍼를 이용하여 성능을 향상시킨 바이트 스트림 클래스입니다.
  • BufferedReader, BufferedWriter: 버퍼를 이용하여 성능을 향상시킨 문자 스트림 클래스입니다.

파일 입출력 과정

  1. 스트림 생성: 파일을 열고 스트림 객체를 생성합니다.
  2. 데이터 읽기/쓰기: 스트림 객체의 메소드를 사용하여 데이터를 읽거나 씁니다.
  3. 스트림 닫기: 작업이 완료되면 스트림을 닫습니다.

예제: 텍스트 파일 읽기 및 쓰기

import java.io.*;

public class FileIOExample {
    public static void main(String[] args) {
        try (BufferedReader br = new BufferedReader(new FileReader("input.txt"));
             BufferedWriter bw = new BufferedWriter(new FileWriter("output.txt"))) {

            String line;
            while ((line = br.readLine()) != null) {
                bw.write(line);
                bw.newLine();
            }
        } catch (IOException e) {
            e.printStackTrace();
        }
    }
}
 
  • try-with-resources: 스트림을 자동으로 닫아주는 편리한 기능입니다.
  • BufferedReader: 한 줄씩 읽어오는 데 효율적입니다.
  • BufferedWriter: 버퍼를 이용하여 여러 줄을 한 번에 써주는 데 효율적입니다.

파일 입출력 시 주의사항

  • 파일 경로: 정확한 파일 경로를 지정해야 합니다.
  • 예외 처리: 파일 입출력 중 예외가 발생할 수 있으므로 적절한 예외 처리를 해야 합니다.
  • 스트림 닫기: 사용한 스트림은 반드시 닫아줘야 메모리 누수를 방지할 수 있습니다.
  • 파일 잠금: 여러 프로그램에서 동시에 파일을 접근할 때는 파일 잠금을 고려해야 합니다.

심화 내용

  • 직렬화: 객체를 파일로 저장하고 복원하는 방법입니다.
  • NIO: 비동기 입출력을 지원하는 새로운 I/O API입니다.
  • 파일 시스템: 파일 시스템 관련 클래스를 이용하여 파일이나 디렉토리에 대한 다양한 작업을 수행할 수 있습니다.

결론

자바 파일 입출력은 다양한 분야에서 활용되는 중요한 기능입니다. 위에서 설명한 내용을 바탕으로 파일 입출력에 대한 이해를 높이고, 실제 프로그램 개발에 적용해 보세요.

 

 

728x90
728x90

'Java를 배워보자 > 5. 입출력' 카테고리의 다른 글

자바 콘솔 입출력 (Scanner, PrintStream)  (0) 2024.09.27