import java.io.FileOutputStream;
import java.io.IOException;
import java.io.InputStreamReader;
import java.io.OutputStreamWriter;
import java.io.Reader;
import java.io.Writer;
public class Ex008_Encoding {
public static void main(String[] args) {
// MS949(euc-kr 유사) 데이터를 UTF-8 형식의 파일로 저장하기
int data;
String pathname = "test.txt";
// 파일에 내용을 문자 출력 스트림. 인코딩은 UTF-8
try (Writer wt = new OutputStreamWriter(new FileOutputStream(pathname), "UTF-8") ){
// 바이트 스트림을 문자 스트림으로 바꿈
// byte 스트림을 문자 스트림으로. 인코딩은 MS949
Reader rd = new InputStreamReader(System.in, "MS949");
// Reader rd = new InputStreamReader(System.in); // 시스템에 설정된 기본 인코딩
System.out.println("입력[종료:ctrl+z]...");
while( (data = rd.read()) != -1) {
wt.write(data);
}
wt.flush();
} catch (IOException e) {
e.printStackTrace();
}
}
}
문자 스트림을 다루기 때문에 내용을 보낼 때 Writer, 내용을 받을 때 Reader 를 사용한다.
여기서는 키보드를 통해 입력받은 것을 test.txt로 저장한다.
import java.io.FileInputStream;
import java.io.FileOutputStream;
import java.io.InputStreamReader;
import java.io.OutputStreamWriter;
import java.io.Reader;
import java.io.Writer;
public class Ex009_Encoding {
public static void main(String[] args) {
// UTF-8 파일을 MS949 파일로 복사하기
String source = "test.txt";
String dest = "ex.txt";
int data;
try(Reader rd = new InputStreamReader(new FileInputStream(source), "UTF-8");
Writer wt = new OutputStreamWriter(new FileOutputStream(dest), "MS949")
) {
while( (data = rd.read()) != -1) {
wt.write(data);
}
wt.flush();
System.out.println("변환 저장 완료...");
} catch (Exception e) {
e.printStackTrace();
}
}
}
위에서 test.txt 저장한 것을 MS949로 변환시켜준다.
'쌍용강북교육센터 > 8월' 카테고리의 다른 글
0825_Java : BufferedReader, BufferedWriter 클래스 (0) | 2021.08.25 |
---|---|
0824_Java숙제 : 파일 속 자료 중에 조건에 해당하는 자료 다른 파일로 옮기기 (2) | 2021.08.25 |
0824_Java : CAT 파일의 내용을 읽어 화면에 출력 (0) | 2021.08.25 |
0824_Java : File 클래스 (0) | 2021.08.24 |
0823_Java : FileOutputStream 클래스 (0) | 2021.08.24 |