일반적으로 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(자바)' 카테고리의 다른 글
Java 매우 쉬운 날짜 사용 (LocalDate, Java 1.8 date), Java 현재 날짜 (0) | 2019.12.16 |
---|---|
JAVA sftp 파일전송, 자바 sftp 파일전송 (JSch 파일전송) (2) | 2019.12.13 |
리눅스 jar파일 업데이트(jar -uvf, jar update file) (0) | 2019.10.24 |
Java Jsch를 활용하여 파일 다운로드(Jsch sftp, Jsch download file) (0) | 2019.10.23 |
테스트용 SSL 톰캣 적용기 (SSL Tomcat, OpenSSL) (12) | 2019.10.14 |
* 위 에니메이션은 Html의 캔버스(canvas)기반으로 동작하는 기능 입니다. Html 캔버스 튜토리얼 도 한번 살펴보세요~ :)
* 직접 만든 Html 캔버스 애니메이션 도 한번 살펴보세요~ :)
댓글