В Java есть ли способ управлять кодировкой файлов System.in и System.out?Java System.in и System.out отличаются между Sun/Oracle и IBM JVMs - решения для чтения стандартного байтового массива записи
ВС/Oracle использует:
java.io.BufferedInputStream - Stdin java.io.PrintStream - Stdout
IBM использует:
com.ibm.jvm.io.ConsoleInputStream - Stdin com.ibm.jvm.io.ConsolePrintStream - Stdout
Проблема возникает на свет с JVM IBM, где выводит массив байтов данных в шестнадцатеричном дает : 308209d606092 ... (непосредственно перед записью на System.out)
но прочитайте в том же файле и выписывается как hex: 303f09d606092a3f48 ...
Sun/Oracle показывает одинаковое шестнадцатеричное значение.
Есть ли способ управлять этими входами или отрезать к основному общему потоку ввода-вывода? System.out является окончательным, и реализация, похоже, зависит от JVM.
В общем случае использование перенаправления является последовательным способом передачи текстовых/двоичных данных между приложениями?
Любой код, который показывает, как нормализовать данные ввода/вывода в/из System.in/out оценили. Использование Commons-IO IOUtils для чтения/записи потоков в байтовые массивы.
Хотя это правда, что '' System.out' является final', есть также магия 'System.setOut (PrintStream)', который может чан ge it (есть также 'System.setIn (InputStream)'). Вы можете изменить их в поток по своему усмотрению, если хотите. – JonK