본문 바로가기

Language/Java / JSP

[Java] 텍스트 파일 생성 (FileWriter, BufferedWriter)

반응형


필요에 의해 로그 파일과 같은 텍스트 파일을 생성할 일들이 있다.

나 같은 경우는 배치 프로그램의 실행 결과 등을 주로 남기거나, DB 데이터 등을 CSV로 생성하거나 할때 Java로 파일 생성을 한다.

Java에서 파일 생성을 하는 방법은 간단하다.

FileWriter 객체를 이용하여 파일을 생성하고 필요한 텍스트 문자들을 넣어주면 된다.

워낙 간단하니 소스만 봐도 쉽게 이해가 갈 것이다.


1. FileWriter를 이용한 파일 생성

import java.io.BufferedWriter;
import java.io.File;
import java.io.FileWriter;


public class FileWriterTest {
	
	
	public static void main(String[] args) {
		
		String txt = "테스트입니다!!" ;
		
		String fileName = "C:\\test11.txt" ;
		
		
		try{
			
			// 파일 객체 생성
			File file = new File(fileName) ;
			
			// true 지정시 파일의 기존 내용에 이어서 작성
			FileWriter fw = new FileWriter(file, true) ;
			
			// 파일안에 문자열 쓰기
			fw.write(txt);
			fw.flush();

			// 객체 닫기
			fw.close(); 
			
			
		}catch(Exception e){
			e.printStackTrace();
		}
		

	}
}



2. BufferedWriter + FileWriter를 이용한 생성

import java.io.BufferedWriter;
import java.io.File;
import java.io.FileWriter;


public class FileWriterTest {
	
	
	public static void main(String[] args) {
		
		String txt = "테스트입니다!!" ;
		
		String fileName = "C:\\test11.txt" ;
		
		
		try{
						
			// BufferedWriter 와 FileWriter를 조합하여 사용 (속도 향상)
			BufferedWriter fw = new BufferedWriter(new FileWriter(fileName, true));
			
			// 파일안에 문자열 쓰기
			fw.write(txt);
			fw.flush();

			// 객체 닫기
			fw.close(); 
			
			
		}catch(Exception e){
			e.printStackTrace();
		}
		

	}
}





위의 1, 2번 코드는 모두 동일한 형태의 파일을 생성한다. 하지만 성능에는 큰 차이가 발생한다.
기록하고자 하는 파일의 크기가 100K를 넘는다면 FileWriter를 단독으로 쓰기보다는 BufferedWriter + FileWriter

혼합하여 사용하는게 파일 기록할때 속도가 더 빠르다.

아. 물론 위 방법 말고도 Java를 통해 파일 생성하는 법이 여러가지가 있는데,

마찬가지로 최고의 성능은 BufferedWriter + FileWriter 조합이다.

어느 개발자분이 테스트한 자료가 있는데, 그 분은 50K를 넘어가는 시점부터 성능차이가 발생한다고 하였다.


특히 대용량 파일을 생성할때에는 BufferedWriter + FileWriter 를 조합하여 함께 사용하자.
참고로 나같은 경우 대용량 파일을 주기적으로 생성하는데,

이때 파일안에 작성하는 문자열도 String 보다는 StringBuilder나 StringBuffer를 사용해야 한다.


해당 이유는 조만간 포스팅 하도록 하겠다.



ps ) 사실 단순 로그를 남기는것은 log4j 라이브러리를 이용하는게 편하다.