Java에서 System.in과 System.out의 파일 인코딩을 제어하는 방법이 있습니까?Java System.in과 System.out은 Sun/Oracle과 IBM JVM간에 다릅니다 - 표준 바이트 배열 읽기 쓰기 솔루션
일/오라클 사용
java.io.BufferedInputStream - Stdin java.io.PrintStream - Stdout
IBM이 사용
com.ibm.jvm.io.ConsoleInputStream - Stdin com.ibm.jvm.io.ConsolePrintStream - Stdout
문제는 헥사 데이터 바이트 배열을 출력하여 제공하는 IBM의 JVM으로 발각 : 308209d606092 ... (System.out에 쓰기 직전)
읽기 같은 파일에 쓰고 16 진수로 쓰면 : 303f09d606092a3f48 ...
Sun/Oracle은 동일한 16 진수 값을 표시합니다.
입력을 제어하거나 기본 공통 입력/출력 스트림으로 다시 잘라내려면 어떤 방법이 있습니까? System.out은 final이며, 구현은 JVM에 의존하는 것처럼 보입니다.
더 일반적으로 응용 프로그램간에 텍스트/이진 데이터를 전송하는 일관된 방법으로 리디렉션을 사용합니까?
System.in/out에서 입출력 데이터를 정규화하는 방법을 보여주는 코드. Commons-IO IOUtils를 사용하여 바이트 배열로 스트림을 읽고 씁니다.
'System.out'은'final'이지만 실제로는 'System.setOut (PrintStream)'메서드가 있습니다. 그것은 (System.setIn (InputStream)도있다). 원한다면 원하는 스트림으로 변경할 수 있습니다. – JonK