[Day 9 | Java] FileWriter

y♡ding·2024년 10월 24일

데브코스 TIL

목록 보기
47/163

1. FileWriter 클래스

  • FileWriterWriter 클래스의 하위 클래스이며, 문자 데이터를 파일에 쓰기 위한 목적으로 사용됩니다.
  • 주로 텍스트 파일을 생성하거나, 기존 파일에 덮어쓰기 또는 이어쓰기를 할 때 사용됩니다.
  • 기본적으로 문자 스트림을 처리하며, 바이트 데이터를 처리하는 바이트 스트림과는 구분됩니다.

2. 파일 쓰기 모드: 덮어쓰기 vs 이어쓰기

  • FileWriter(String fileName, boolean append) 생성자를 사용하면 두 가지 모드로 파일에 데이터를 쓸 수 있습니다:
    • 덮어쓰기 모드: FileWriter(fileName) 또는 FileWriter(fileName, false)는 파일을 새로 생성하거나 기존 파일의 내용을 덮어씁니다.
    • 이어쓰기 모드: FileWriter(fileName, true)는 파일이 존재할 경우 기존 파일의 끝에 데이터를 이어 씁니다.

예시:

  • 코드에서 아래 부분은 이어쓰기 모드로 ./test.txt 파일에 데이터를 작성합니다.
    fw = new FileWriter("./test.txt", true);

3. write() 메서드

  • write(String s) 메서드는 인자로 받은 문자열을 파일에 씁니다.

  • 이 예제에서는 "Hello"라는 문자열을 두 번 파일에 작성하고 있습니다.

    fw.write("Hello");
  • 또한, System.lineSeparator()를 사용하여 줄바꿈을 추가합니다. 이 메서드는 현재 운영체제에 맞는 줄바꿈 문자를 반환합니다:

    • Windows: \r\n
    • Unix 계열: \n
    • Mac (구형): \r
    fw.write(System.lineSeparator());

4. 파일 쓰기 완료 후 자원 해제 (close 메서드)

  • 파일 작업이 끝나면 스트림을 닫아야 합니다. 그렇지 않으면 자원이 제대로 해제되지 않아 메모리 누수 또는 파일 잠금과 같은 문제가 발생할 수 있습니다.
  • 코드에서는 finally 블록에서 close() 메서드를 호출하여 자원을 해제합니다.
    if (fw != null) {
        try { fw.close(); } 
        catch (IOException e) {}
    }

5. 예외 처리 (IOException)

  • 파일 입출력 시에는 IOException이 발생할 수 있으므로, 이를 처리하기 위해 try-catch 블록을 사용합니다.
  • 만약 파일 쓰기 도중 오류가 발생하면, IOException을 캐치하여 오류 메시지를 출력합니다.
    catch (IOException e) {
        System.out.println("[애러] " + e.getMessage());
    }

6. 코드 흐름

  1. FileWriter 객체가 true 인자로 초기화되어 이어쓰기 모드로 열립니다.
  2. "Hello" 문자열을 파일에 두 번 작성하고, 각 문자열 사이에 줄바꿈을 추가합니다.
  3. 파일에 쓰기 작업이 완료되면, 파일이 안전하게 닫히도록 close() 메서드가 호출됩니다.
  4. 작업이 성공적으로 완료되면, "출력 완료" 메시지를 출력합니다.

7. 전체 코드 요약

  • 이 코드는 ./test.txt 파일에 "Hello"라는 문자열을 두 번 쓰고, 각 줄 사이에 줄바꿈을 추가합니다.
  • 파일이 존재할 경우에는 이어서 내용을 추가하며, 파일이 없으면 새로 생성됩니다.
  • 파일 쓰기 작업이 완료되면, 파일 스트림을 닫아 자원을 해제하고 오류가 발생하면 예외를 처리합니다.

Oracle의 공식 문서

0개의 댓글