스트림 ( InputStream
및 OutputStream
)은 이진 데이터를 전송 합니다. 문자열을 스트림에 쓰려면 먼저이를 바이트로 변환하거나 다른 말로 인코딩 해야합니다. String.getBytes(Charset)
메소드를 사용하여 수동으로 (권장대로) 수행 할 수 있지만 String.getBytes()
이식 가능한 방식으로 안정적으로 예측 할 수없는 JVM의 기본 인코딩을 사용하므로 메소드를 피해야합니다 .
그러나 문자 데이터를 스트림에 쓰는 일반적인 방법은 스트림을 (또는 ) 메서드 를 호출 할 때 변환 하는 Writer
, (종종 a PrintWriter
) 로 래핑하는 것입니다. InputStreams의 해당 랩퍼는 Reader 입니다.write(String)
print(String)
PrintStream
OutputStream
문자열을 자동으로 인코딩하는 메소드도 포함한다는 점에서 특수 구현입니다 (내부적으로 작성자를 사용함). 그러나 여전히 스트림입니다. 스트림이 PrintStream
다른 스트림 구현 이든 관계없이 스트림을 라이터로 안전하게 래핑 할 수 있습니다 . 이중 인코딩의 위험이 없습니다.
OutputStream이있는 PrintWriter의 예 :
try (PrintWriter p = new PrintWriter(new FileOutputStream("output-text.txt", true))) {
p.println("Hello");
} catch (FileNotFoundException e1) {
e1.printStackTrace();
}