[java] 파일 입출력에 함수형 인터페이스를 적용하는 예시는 어떤 것이 있나요?

자바에서 함수형 인터페이스는 람다식과 함께 많이 사용되며, 파일 입출력에서도 유용하게 적용할 수 있습니다. 함수형 인터페이스를 사용하면 파일 입출력 작업을 간결하고 읽기 쉽게 구현할 수 있습니다. 다음은 파일 입출력에 함수형 인터페이스를 적용하는 예시입니다.

import java.io.BufferedReader;
import java.io.BufferedWriter;
import java.io.FileReader;
import java.io.FileWriter;
import java.io.IOException;
import java.util.function.Consumer;

public class FileIOWithFunctionalInterface {

    public static void main(String[] args) {
        String fileName = "example.txt";

        // 파일에 쓰기
        writeToFile(fileName, writer -> {
            try {
                writer.write("Hello, World!");
            } catch (IOException e) {
                e.printStackTrace();
            }
        });

        // 파일에서 읽기
        readFromFile(fileName, reader -> {
            try {
                String line = reader.readLine();
                System.out.println(line);
            } catch (IOException e) {
                e.printStackTrace();
            }
        });
    }

    public static void writeToFile(String fileName, Consumer<BufferedWriter> fileWriter) {
        try (BufferedWriter writer = new BufferedWriter(new FileWriter(fileName))) {
            fileWriter.accept(writer);
        } catch (IOException e) {
            e.printStackTrace();
        }
    }

    public static void readFromFile(String fileName, Consumer<BufferedReader> fileReader) {
        try (BufferedReader reader = new BufferedReader(new FileReader(fileName))) {
            fileReader.accept(reader);
        } catch (IOException e) {
            e.printStackTrace();
        }
    }
}

위의 예시 코드는 writeToFilereadFromFile라는 두 개의 메소드를 정의하였습니다. 이 메소드들은 Consumer 함수형 인터페이스를 매개변수로 받아 파일 입출력을 수행합니다.

writeToFile 메소드는 파일에 쓰기 작업을 수행하고, readFromFile 메소드는 파일에서 읽기 작업을 수행합니다. 각각의 메소드 내부에서는 BufferedWriterBufferedReader를 이용하여 파일 입출력을 진행하고, Consumer 객체를 매개변수로 받아 실제 파일 작업을 수행합니다.

예시 코드를 실행하면 “example.txt” 파일에 “Hello, World!”를 쓰고, 다시 읽어서 출력하는 결과를 얻을 수 있습니다. 이렇게 함수형 인터페이스를 사용하여 파일 입출력을 구현하면 작업을 간결하게 처리할 수 있습니다.

더 자세한 정보는 Oracle Java Documentation을 참조할 수 있습니다.