본문 바로가기
블로그 이미지

방문해 주셔서 감사합니다! 항상 행복하세요!

  
   - 문의사항은 메일 또는 댓글로 언제든 연락주세요.
   - "해줘","답 내놔" 같은 질문은 답변드리지 않습니다.
   - 메일주소 : lts06069@naver.com


Java(자바)

Java CSV 한글 깨짐, Java make csv file, 자바 CSV 파일 깨짐

야근없는 행복한 삶을 위해 ~
by 마샤와 곰 2019. 11. 11.

 

 

일반적으로 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(); }}
      }
  }
}

 

귀찮더라도 열고, 쓰고, 닫고는 까먹지 말고 해 주자.

 

 

반응형
* 위 에니메이션은 Html의 캔버스(canvas)기반으로 동작하는 기능 입니다. Html 캔버스 튜토리얼 도 한번 살펴보세요~ :)
* 직접 만든 Html 캔버스 애니메이션 도 한번 살펴보세요~ :)

댓글