본문 바로가기

명사 美 비격식 (무리 중에서) 아주 뛰어난[눈에 띄는] 사람[것]

JAVA

바이트를 문자기반 스트림으로 InputStreamReader와 OutputStreamWriter, 인코딩을 변환하는 getEncoding()

InputStreamReader와 OutputStreamWriter
바이트 기반 스트림을 문자기반 스트림으로 연결시키며 

바이트기반 스트림의 데이터를 지정된 인코딩의 문자데이터로 변환하는 작업을 수행한다.

inputStreamReader(inputStream in)
inputStreamReader(InputStream in, Strring encoding)
String getEncoding()

OutputStreamWriter(OutputStream out)
OutputStreamWriter(OutputStream out, String encoding)
String getEncoding()

 

 

InputStreamReader와 OutputStreamWriter

"input.txt" 파일에서 텍스트를 읽어와서 "output.txt" 파일에 한 줄씩 쓴다.
`FileInputStream`과 `FileOutputStream`을 사용하여 각각의 파일에 대한 입력 및 출력 스트림을 생성해
`InputStreamReader`와 `OutputStreamWriter`를 사용하여 바이트 기반의 스트림을 문자 기반의 스트림으로 변환하며
`BufferedReader`와 `BufferedWriter`를 사용하여 성능을 향상시킨다.

import java.io.*;

public class InputStreamReaderOutputStreamWriterExample {
    public static void main(String[] args) {
        try (
            // 바이트 기반 입력 스트림과 출력 스트림 생성
            FileInputStream fis = new FileInputStream("input.txt");
            FileOutputStream fos = new FileOutputStream("output.txt");
            // 바이트 기반 스트림을 문자 기반으로 변환하는 InputStreamReader와 OutputStreamWriter 생성
            InputStreamReader isr = new InputStreamReader(fis);
            OutputStreamWriter osw = new OutputStreamWriter(fos);
            BufferedReader reader = new BufferedReader(isr);
            BufferedWriter writer = new BufferedWriter(osw);
        ) {
            // 파일에서 한 줄씩 읽어와서 다시 파일에 쓰기
            String line;
            while ((line = reader.readLine()) != null) {
                writer.write(line);
                writer.newLine(); // 새로운 줄로 이동
            }
            System.out.println("파일이 성공적으로 복사되었습니다.");
        } catch (IOException e) {
            System.err.println("파일을 읽거나 쓰는 중 오류가 발생했습니다: " + e.getMessage());
        }
    }
}

[출력결과]
파일이 성공적으로 복사되었습니다.

 

 

 

getEncoding()

문자열을 UTF-8 인코딩으로 파일에 쓰고, 파일의 인코딩을 확인하는 예시이다.
 `OutputStreamWriter`를 사용하여 UTF-8로 인코딩된 문자를 파일에 쓰고  

`InputStreamReader`를 사용하여 파일을 가져와
`getEncoding()` 메서드를 사용하여 파일의 현재 인코딩을 확인한다.

import java.io.*;

public class EncodingExample {
    public static void main(String[] args) {
        try {
            // 파일에 쓸 문자열
            String message = "안녕하세요, Hello, こんにちは";

            // 출력 파일 생성
            FileOutputStream fos = new FileOutputStream("encoded.txt");
            // OutputStreamWriter를 사용하여 UTF-8 인코딩으로 문자를 파일에 쓰기
            OutputStreamWriter osw = new OutputStreamWriter(fos, "UTF-8");
            osw.write(message);
            osw.close();

            // 출력 파일의 인코딩 가져오기
            FileInputStream fis = new FileInputStream("encoded.txt");
            InputStreamReader isr = new InputStreamReader(fis);
            String encoding = isr.getEncoding();
            isr.close();

            System.out.println("파일의 인코딩: " + encoding); // UTF-8 출력
        } catch (IOException e) {
            e.printStackTrace();
        }
    }
}

[출력결과]
파일의 인코딩: UTF-8