자바 파일 라이터 클래스,java.io.FileWriter
,파일에 문자를 쓸 수 있습니다. 이 점에서 자바 파일 라이터는FileOutputStream
는 바이트 기반이고FileWriter
은 문자 기반이라는 점을 제외하고는FileOutputStream
와 많이 유사합니다. FileWriter
은 텍스트를 작성하기위한 것입니다. 사용 중인 문자 인코딩 체계에 따라 한 문자가 하나 이상의 바이트에 해당할 수 있습니다. 자바FileWriter
클래스는 방법에 의해,자바 작가 클래스의 서브 클래스입니다.
파일 라이터 예제
다음은 간단한 자바FileWriter
예제입니다:
Writer fileWriter = new FileWriter("data\filewriter.txt");fileWriter.write("data 1");fileWriter.write("data 2");fileWriter.write("data 3");fileWriter.close();
참고: 명확성을 위해 여기서 적절한 예외 처리를 건너 뛰었습니다. 올바른 예외 처리에 대한 자세한 내용은 자바 입출력 예외 처리로 이동합니다.
FileWriter
에는 다른 생성자도 있으므로 다른 방법으로 쓸 파일을 지정할 수 있습니다. 더 자세한 정보는 공식 자바독에서 확인하십시오.
덮어쓰기 대 파일 추가
자바FileWriter
을 만들 때 기존 파일을 같은 이름으로 덮어쓸 것인지,기존 파일에 추가할 것인지 결정할 수 있습니다. 당신은 당신이 사용하는FileWriter
생성자를 선택하여 결정합니다.
FileWriter
하나의 매개 변수 인 파일 이름을 사용하는 생성자는 기존 파일을 덮어 씁니다:
Writer fileWriter = new FileWriter("c:\data\output.txt");
FileWriter
파일 이름과 부울:너무 2 매개 변수를 사용하는 생성자가 있습니다. 부울은 기존 파일을 추가하거나 덮어쓸 것인지 여부를 나타냅니다. 여기에 보여주는 두 자바FileWriter
예는 다음과 같습니다:
Writer fileWriter = new FileWriter("c:\data\output.txt", true); //appends to fileWriter fileWriter = new FileWriter("c:\data\output.txt", false); //overwrites file
파일 라이터 문자 인코딩
FileWriter
은 응용 프로그램이 실행 중인 컴퓨터의 기본 문자 인코딩을 사용하여 파일에 바이트를 인코딩하려는 것으로 가정합니다. 이것은 항상 당신이 원하는 것을하지 않을 수 있습니다,당신은 그것을 변경할 수 없습니다!
다른 문자 인코딩 체계를 지정하려면FileWriter
을 사용하지 마십시오. 대신FileOutputStream
에OutputStreamWriter
을 사용합니다. OutputStreamWriter
을 사용하면 기본 파일에 바이트를 쓸 때 사용할 문자 인코딩 체계를 지정할 수 있습니다.
쓰기(지능)
자바FileWriter
write(int)
메서드는int
의 하위 16 비트를FileWriter
이 연결된 대상에 단일 문자로 씁니다. 다음은 자바FileWriter
에 단일 문자를 쓰는 예입니다.:
FileWriter fileWriter = new FileWriter("data/output.txt");fileWriter.write('A');
쓰기(문자)
자바FileWriter
또한FileWriter
이 연결된 대상에 문자 배열을 쓸 수있는write(char)
메서드가 있습니다. write(char)
메서드는FileWriter
에 실제로 기록된 문자 수를 반환합니다. 다음은 자바에 문자 배열을 작성하는 예입니다FileWriter
:
FileWriter fileWriter = new FileWriter("data/output.txt");char chars = new char{'A','B','C','D','E'};fileWriter.write(chars);
쓰기 성능
한 번에 하나의 문자를 쓰는 것보다 자바 파일 라이터에 문자 배열을 쓰는 것이 더 빠릅니다. 속도 향상은 매우 중요 할 수 있습니다-최대 10 배 이상. 따라서 가능할 때마다write(char)
방법을 사용하는 것이 좋습니다.
당신이 얻을 정확한 속도 향상은 자바 코드를 실행하는 컴퓨터의 기본 운영 체제 및 하드웨어에 따라 달라집니다. 속도 향상은 메모리 속도,하드 디스크 속도 및 버퍼 크기 등과 같은 문제에 따라 다릅니다.
버퍼라이터를 통한 투명 버퍼링
자바 버퍼라이터로 래핑하여 자바FileWriter
에 작성된 바이트의 투명 버퍼링을 얻을 수 있습니다. BufferedWriter
에 기록 된 모든 바이트는 먼저BufferedWriter
의 내부 바이트 배열 내에서 버퍼링됩니다. 버퍼가 가득 차면 버퍼가 기본FileWriter
로 한꺼번에 플러시됩니다. 다음은 자바FileWriter
을 래핑하는 예입니다.BufferedWriter
:
int bufferSize = 8 * 1024;Writer writer = new BufferedWriter( new FileWriter("c:\data\output-file.txt"), bufferSize );
BufferedWriter
에 대한 자세한 내용은 버퍼라이터 자습서에서 확인할 수 있습니다.
플러시()
자바FileWriter
의flush()
메서드는FileWriter
에 기록된 모든 데이터를 기본 파일로 플러시합니다. 데이터는 자바 코드가FileWriter
에 기록 된 경우에도 어딘가에 운영 체제 메모리에 버퍼링 될 수 있습니다. flush()
를 호출하면 버퍼링 된 데이터가 디스크에 플러시(기록)될 것이라고 확신 할 수 있습니다. 다음은flush()
메서드를 호출하여 자바FileWriter
에 작성된 데이터 플러싱의 예입니다:
fileWriter.flush();
파일 라이터 닫기
자바FileWriter
에 문자 쓰기를 마치면 닫아야 합니다. FileWriter
을 닫는 것은close()
메서드를 호출하여 수행됩니다. 자바FileWriter
을 닫는 방법은 다음과 같습니다:
fileWriter.close();
또한 자바 7 에 도입 된 시도-와-자원 구조를 사용할 수 있습니다. 리소스 사용 시도 구문으로FileWriter
모양을 사용하고 닫는 방법은 다음과 같습니다.
try(FileWriter fileWriter = new FileWriter("data\filewriter.txt") ){ fileWriter.write("data 1"); fileWriter.write("data 2"); fileWriter.write("data 3");}