BufferedWriter.flush()

Xylitol311·2024년 2월 27일

Back-end

목록 보기
1/14

java에서 자바 환경정보를 테이블에 정리하여 html 파일을 생성하는 과정 진행 중 내용이 중간에서 끊겨서 저장되는 문제 발생했다. 몇번을 반복해도 같은 문제가 발생해 파일에 저장하기 전 완성된 최종 문자열을 출력해봤으나 문자열에는 이상이 없었다. 아마 BufferedWriter를 이용해 write()하는 과정에서 무언가 문제가 발생한 거라고 추측하고 원인을 검색해보았다.

우선 BufferedWriter는 기본적으로 버퍼가 다 찰 경우 내용을 출력하게 되는데 이때 flush()를 사용하지 않으면 출력하지 않은 내용이 있어도 출력스트림을 닫아버린다. 내 경우 이것 때문에 전체 내용이 출력되지 못하고 미완성인 채로 html파일이 저장되는 것이었다. 그래서 중간에 flush() 메서드를 추가하고 다시 실행한 결과 그제서야 제대로 저장이 되는 것을 확인할 수 있었다.

  • <수정 전>
    try {
        File file = new File("index.html");
        BufferedWriter writer = new BufferedWriter(new FileWriter(file));
        writer.write(answer); // 여기서 문제가 발생하는 것으로 추정
        writer.close();
    } catch (IOException e) {
        e.printStackTrace();
    }
  • <수정 후>
    try {
        File file = new File("index.html");
        BufferedWriter writer = new BufferedWriter(new FileWriter(file));
        writer.write(answer);
        writer.flush(); // 남은 데이터를 출력
        writer.close();
    } catch (IOException e) {
        e.printStackTrace();
    }
profile
문제에 도전하고 성장하는 백엔드 개발자입니다.

0개의 댓글