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
'JAVA' 카테고리의 다른 글
파일내에서 원하는 위치로 이동할 수 있는, RandomAccessFile (0) | 2024.04.11 |
---|---|
콘솔이외의 다른 입출력대상으로, setOut(), setErr(), setIn() (0) | 2024.04.11 |
버퍼를 이용해서 입출력의 효율을 높이는 BufferedReader와 BufferedWriter (0) | 2024.04.11 |
문자열 데이터를 읽고 쓰는 데 사용되는 클래스, StringReader와 StringWriter (0) | 2024.04.11 |
한 스레드에서 생성한 데이터를 다른 스레드에서 읽을 수 있는 PipeReader와 PippedWriter (0) | 2024.04.11 |