자바의 입출력 스트림과 파일 처리

2023. 11. 11. 23:53개발 문서/Java

728x90
반응형

자바에서의 입출력 스트림과 파일 처리는 파일이나 네트워크, 키보드, 모니터 등과의 데이터 흐름을 다루는 데 사용됩니다. 이를 통해 파일 읽기, 쓰기, 키보드로부터 입력 받기 등 다양한 입출력 작업을 수행할 수 있습니다.

1. 입출력 스트림 (Input/Output Stream):

자바에서의 입출력은 스트림을 기반으로 합니다. 스트림은 데이터의 흐름을 나타내는데, 입력 스트림은 데이터를 읽어오는 역할을 하고 출력 스트림은 데이터를 쓰는 역할을 합니다. 입출력은 바이트 스트림과 문자 스트림으로 나눌 수 있습니다.

  • 바이트 스트림(Byte Streams):

    • InputStreamOutputStream 클래스와 그 하위 클래스들을 사용합니다.
    // 파일에서 바이트 읽기
    try (InputStream input = new FileInputStream("example.txt")) {
        int data;
        while ((data = input.read()) != -1) {
            System.out.print((char) data);
        }
    } catch (IOException e) {
        e.printStackTrace();
    }
    
    // 파일에 바이트 쓰기
    try (OutputStream output = new FileOutputStream("output.txt")) {
        String data = "Hello, Java!";
        output.write(data.getBytes());
    } catch (IOException e) {
        e.printStackTrace();
    }
  • 문자 스트림(Character Streams):

    • ReaderWriter 클래스와 그 하위 클래스들을 사용합니다.
    // 파일에서 문자 읽기
    try (Reader reader = new FileReader("example.txt")) {
        int data;
        while ((data = reader.read()) != -1) {
            System.out.print((char) data);
        }
    } catch (IOException e) {
        e.printStackTrace();
    }
    
    // 파일에 문자 쓰기
    try (Writer writer = new FileWriter("output.txt")) {
        String data = "Hello, Java!";
        writer.write(data);
    } catch (IOException e) {
        e.printStackTrace();
    }

2. Buffered 스트림:

BufferedInputStreamBufferedOutputStream, BufferedReaderBufferedWriter와 같은 클래스들은 입출력 성능을 향상시키기 위해 버퍼를 사용합니다.

// BufferedInputStream 및 BufferedOutputStream을 사용한 파일 복사
try (BufferedInputStream bis = new BufferedInputStream(new FileInputStream("input.txt"));
    BufferedOutputStream bos = new BufferedOutputStream(new FileOutputStream("output.txt"))) {

    byte[] buffer = new byte[1024];
    int bytesRead;

    while ((bytesRead = bis.read(buffer)) != -1) {
        bos.write(buffer, 0, bytesRead);
    }
} catch (IOException e) {
    e.printStackTrace();
}

3. 파일 처리:

자바에서 파일과 관련된 작업을 수행하기 위해 File 클래스를 사용할 수 있습니다.

  • 파일 생성 및 삭제:

    // 파일 생성
    File file = new File("newFile.txt");
    try {
        if (file.createNewFile()) {
            System.out.println("File created: " + file.getName());
        } else {
            System.out.println("File already exists.");
        }
    } catch (IOException e) {
        e.printStackTrace();
    }
    
    // 파일 삭제
    if (file.delete()) {
        System.out.println("File deleted: " + file.getName());
    } else {
        System.out.println("Failed to delete the file.");
    }
  • 디렉토리 생성:

    // 디렉토리 생성
    File directory = new File("newDirectory");
    if (directory.mkdir()) {
        System.out.println("Directory created: " + directory.getName());
    } else {
        System.out.println("Failed to create the directory.");
    }

이러한 입출력 및 파일 처리 기능을 이용하여 다양한 작업을 수행할 수 있습니다. 입출력 스트림과 파일 처리는 자바 어플리케이션에서