在Java中,是否有任何方法来控制System.in和System.out的文件编码?Java System.in和System.out在Sun/Oracle和IBM JVM之间有所不同 - 读取写入标准字节数组的解决方案
太阳/ Oracle使用:
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之前)
但是读取在同一个文件中写出并以十六进制写出:303f09d606092a3f48 ...
Sun/Oracle显示相同的十六进制值。
有什么办法控制这些输入或切回到底层的通用输入/输出流? System.out是最终的,实现似乎取决于JVM。
更一般的情况是使用重定向一致的方式在应用程序之间传输文本/二进制数据?
任何代码显示如何正常化输入/输出数据/从System.in/out欣赏。使用Commons-IO IOUtils将流读取/写入字节数组。
尽管'System.out'确实是'final',也有一个神奇的'System.setOut(PrintStream)'方法可以通过ge it(还有一个'System.setIn(InputStream)')。如果您愿意,您可以将它们更改为您自己选择的流。 – JonK