ByteArrayOutputStream.ToString()不获取任何字符集



我写了一个简单的代码来打印控制台的输出到BytreArrayOutputStream。我使用JDK 1.7。然而,当我想要一个字符串的缓冲区,我不能使用BytreArrayOutputStream方法。ToString (String Charset).

它没有这个功能。我正在使用JDk1.7,应该支持它。我在windows 7中使用Netbean。

PrintStream co1=new PrintStream(new java.io.ByteArrayOutputStream());
System.setOut(co1);
StatsUtil.submit(command);
co1.flush();
co1.close();
co1.toString();//acceptted this but it doesn't give me the stream content
String t=co1.toString("UTF-8");//the compliers give me errors the method doesn't get any string parameter

任何帮助将不胜感激。

您需要在ByteArrayOutputStream本身上调用toString(),而不是包装它的PrintStream。尝试使用以下代码:

ByteArrayOutputStream baos = new ByteArrayOutputStream();
PrintStream co1 = new PrintStream(baos, "UTF-8");
System.setOut(co1);
StatsUtil.submit(command);
co1.flush();
co1.close();
String t = baos.toString("UTF-8");

看起来您的目标是收集要进入System的所有内容。通过PrintStream,并得到它作为一个字符串在最后。对吗?

假设是,现在,您在这里使用了两个不同的结构。PrintStreamByteArrayOutputStreamPrintStream软管, BAOS为储罐。将写入的字符想象为通过PrintStream 进入BAOS水箱的水。

当你完成时,你对水箱里的水感兴趣,软管里什么也没有。

这就是为什么您需要通过toString从BAOS中获取字节

最新更新