-
[Java] BufferedWriter / OutputStreamWriter / FileOutputStream 으로 파일 만들기Java 2021. 4. 16. 18:00
시작하면서
회사에서 업무를 하면서 기존 데이터를 엑셀(CSV) 형식으로 백업하는 기능을 개발하게 됐다.
BufferedWriter을 써서 파일을 만들고 내부 내용을 입력했는데, 이 과정을 기록하고 각 클래스(BufferedWriter / OutputStreamWriter / FileOutputStream)에 대해 더 알아봤다.
BufferedWriter - OutputStreamWriter - FileStreamWriter
BufferedWriter보다 익숙한 게 있다. 바로 BufferedReader! 처음 자바를 배울 때, Scanner을 사용하지 않고 BufferedReader을 통해 입력을 했던 기억이 있다.
Scanner의 경우 문자열을 입력할 시 자동으로 개행 처리를 해주지만 BufferedReader은 개행을 해주지 않아 문자열의 파싱에 특히 신경을 써줘야 했다.
BufferedWriter은 BufferedReader의 형제격이다. BufferedReader가 입력을 담당한다면 BufferedWriter은 출력을 담당한다. 자바에서 흔히 쓰는 System.out.println();을 대체한다고 보면 된다. 사용하고 나서는 버퍼를 적용하고 비워주고 닫아야 한다.
OutputStreamWriter은 BufferedWriter와 짝꿍이다. BufferedReader의 경우 InputStreamReader와 짝꿍이었다. FileOutputStream은 파일 출력을 담당하는 클래스다.
파일 생성-입력을 하는 과정
1) FileOutputStream 생성자에 파일 경로+이름으로 파일을 생성했다.
2) OutputStreamWriter에는 FileOutputStream 클래스와 인코딩 형식을 파라미터로 전달한다.
3) BufferedWriter에 2)에서 만든 OutputStream을 파라미터로 넣는다.
4) BufferedWriter의 write() 함수로 입력하고자 하는 값을 입력한다.
5) 개행이 필요할 경우 newLine()을 사용한다.
6) flush()로 버퍼를 비우고 close()로 사용한 BufferedReader 객체를 반납한다.
// BufferedWriter 객체 생성 BufferedWriter bw = new BufferedWriter(new OutputStreamWriter (new FileOutputStream("파일경로" + "파일이름.csv"), "인코딩 형식")); bw.write("서버 IP,서버 계정,서버 비밀번호"); // 파일 내부에 쓰고자 하는 내용 bw.newLine(); //개행 bw.flush(); // 버퍼 비우기 bw.close(); // BufferedWriter 닫기