[java] 스트림을 이용한 파일 처리 방법

Java에서는 스트림을 이용하여 파일을 쉽게 처리할 수 있습니다. 스트림은 데이터를 읽고 쓰기 위한 일련의 연속적인 입출력 연산을 추상화한 개념입니다. 이번 블로그에서는 Java의 스트림을 이용하여 파일을 처리하는 방법에 대해 알아보겠습니다.

파일 읽기

파일을 읽기 위해서는 FileInputStream 클래스를 사용합니다. 다음 예제는 파일을 바이트 단위로 읽는 예제입니다.

import java.io.FileInputStream;
import java.io.IOException;

public class FileReadExample {
    public static void main(String[] args) {
        try (FileInputStream fis = new FileInputStream("파일 경로")) {
            int data;
            while ((data = fis.read()) != -1) {
                System.out.print((char) data);
            }
        } catch (IOException e) {
            e.printStackTrace();
        }
    }
}

위 예제에서는 FileInputStream 클래스의 객체를 생성하고, read() 메소드를 호출하여 파일을 읽고 출력하였습니다. read() 메소드는 파일에서 다음 바이트를 읽어 반환하며, 파일의 끝에 도달하면 -1을 반환합니다.

파일 쓰기

파일을 쓰기 위해서는 FileOutputStream 클래스를 사용합니다. 다음 예제는 파일에 문자열을 쓰는 예제입니다.

import java.io.FileOutputStream;
import java.io.IOException;

public class FileWriteExample {
    public static void main(String[] args) {
        try (FileOutputStream fos = new FileOutputStream("파일 경로")) {
            String text = "Hello, World!";
            byte[] data = text.getBytes();
            fos.write(data);
        } catch (IOException e) {
            e.printStackTrace();
        }
    }
}

위 예제에서는 FileOutputStream 클래스의 객체를 생성하고, write() 메소드를 호출하여 문자열을 파일에 씁니다. getBytes() 메소드는 문자열을 바이트 배열로 변환하여 반환합니다.

파일 복사

파일을 복사하기 위해서는 Files 클래스의 copy() 메소드를 사용할 수도 있습니다. 다음 예제는 파일을 복사하는 예제입니다.

import java.nio.file.Files;
import java.nio.file.Path;
import java.nio.file.StandardCopyOption;
import java.io.IOException;

public class FileCopyExample {
    public static void main(String[] args) {
        try {
            Path source = Path.of("소스 파일 경로");
            Path target = Path.of("타겟 파일 경로");
            Files.copy(source, target, StandardCopyOption.REPLACE_EXISTING);
        } catch (IOException e) {
            e.printStackTrace();
        }
    }
}

위 예제에서는 Path 클래스를 사용하여 파일 경로를 생성하고, Files.copy() 메소드를 호출하여 파일을 복사합니다. StandardCopyOption.REPLACE_EXISTING 옵션은 대상 파일이 이미 존재하는 경우 덮어쓰기를 수행합니다.

결론

Java에서는 스트림을 이용하여 파일을 손쉽게 읽고 쓸 수 있습니다. 파일 처리를 위해 FileInputStream, FileOutputStream, Files 클래스를 활용하여 간단하고 효율적인 코드를 작성할 수 있습니다.

참고 문서