[java] 컬렉션 프레임워크를 활용한 파일 입출력

파일 입출력은 자바 프로그래밍에서 중요한 부분입니다. 컬렉션 프레임워크를 사용하면 파일 입출력을 효율적으로 처리할 수 있습니다. 이번에는 자바의 컬렉션 프레임워크를 활용한 파일 입출력에 대해 알아보겠습니다.

1. 파일 읽기

import java.io.File;
import java.io.FileNotFoundException;
import java.util.ArrayList;
import java.util.List;
import java.util.Scanner;

public class FileReader {
    public List<String> readFile(String filePath) throws FileNotFoundException {
        List<String> lines = new ArrayList<>();
        File file = new File(filePath);
        Scanner scanner = new Scanner(file);
        
        while (scanner.hasNextLine()) {
            String line = scanner.nextLine();
            lines.add(line);
        }
        
        scanner.close();
        return lines;
    }
}

위의 코드는 파일을 읽어서 각 줄을 리스트에 저장하는 readFile 메서드를 구현한 예시입니다. Scanner 클래스를 사용하면 쉽게 파일을 읽을 수 있습니다.

2. 파일 쓰기

import java.io.File;
import java.io.FileWriter;
import java.io.IOException;
import java.util.List;

public class FileWriter {
    public void writeFile(String filePath, List<String> lines) throws IOException {
        File file = new File(filePath);
        FileWriter writer = new FileWriter(file);
        
        for (String line : lines) {
            writer.write(line + "\n");
        }
        
        writer.close();
    }
}

위의 코드는 리스트에 있는 문자열을 파일에 쓰는 writeFile 메서드를 구현한 예시입니다. FileWriter 클래스를 사용하면 파일에 쉽게 쓸 수 있습니다.

3. 활용 예시

import java.io.FileNotFoundException;
import java.io.IOException;
import java.util.List;

public class FileExample {
    public static void main(String[] args) {
        FileReader fileReader = new FileReader();
        FileWriter fileWriter = new FileWriter();
        
        try {
            // 파일 읽기
            List<String> lines = fileReader.readFile("input.txt");
            
            // 읽은 내용 수정하기
            for (int i = 0; i < lines.size(); i++) {
                String line = lines.get(i);
                lines.set(i, line.toUpperCase());
            }
            
            // 수정된 내용 파일에 쓰기
            fileWriter.writeFile("output.txt", lines);
            
            System.out.println("파일 입출력이 완료되었습니다.");
        } catch (FileNotFoundException e) {
            System.out.println("파일이 존재하지 않습니다.");
        } catch (IOException e) {
            System.out.println("파일 입출력 중 오류가 발생하였습니다.");
        }
    }
}

위의 예시 코드는 실제로 파일을 읽고 수정한 후에 새로운 파일에 쓰는 과정을 나타냅니다. FileReaderFileWriter를 사용하여 파일을 처리하고, 예외 처리를 통해 오류를 처리합니다.

참고 자료