일반적으로 csv파일을 만들 때 아래처럼 할 경우 한글이 여지없이 깨진다.
String filePath = "저장할 파일경로/이름";
FileWriter fw = new FileWriter(filePath, true);
fw.write("파일내용");
편집기로 보면, 인코딩이나 기타 형식이 전부 올바르게 되었음에도 불구하고 말이다.
이를 대비하기위해서는 FileWriter를 사용하지말고 조금 번거로울지라도 여러개의 아웃풋스트림 객체를 사용하면 된다.
BufferedWriter bw = new BufferedWriter(new OutputStreamWriter(new FileOutputStream("디렉토리/파일명"), "MS949"));
bw.write(text);
물론 저렇게 코딩하면 안되지만..
스트림을 열었으니 닫고 열어주는 코딩을 적용해야 된다.
import java.io.BufferedWriter;
import java.io.FileOutputStream;
import java.io.IOException;
import java.io.OutputStreamWriter;
public class Tester{
public static void main(String args[]){
String directoryWithFile = "디렉토리/파일명";
String text = "내용";
FileOutputStream fos = null;
OutputStreamWriter osw = null;
BufferedWriter bfw = null;
try {
fos = new FileOutputStream(directoryWithFile);
osw = new OutputStreamWriter(fos, "MS949");
bfw = new BufferedWriter(osw);
bfw.write(text); //쓰기
} catch (Exception e) {
e.printStackTrace();
} finally { //닫기
if(fos != null) {try { fos.close(); } catch (IOException e) { e.printStackTrace(); }}
if(osw != null) {try { osw.close(); } catch (IOException e) { e.printStackTrace(); }}
if(bfw != null) {try { bfw.close(); } catch (IOException e) { e.printStackTrace(); }}
}
}
}
귀찮더라도 열고, 쓰고, 닫고는 까먹지 말고 해 주자.
반응형
'Java(자바)' 카테고리의 다른 글
* 위 에니메이션은 Html의 캔버스(canvas)기반으로 동작하는 기능 입니다. Html 캔버스 튜토리얼 도 한번 살펴보세요~ :)
* 직접 만든 Html 캔버스 애니메이션 도 한번 살펴보세요~ :)
댓글