ByteArrayOutputStream。 ToString()没有得到任何字符集

时间:2015-09-29 05:18:05

标签: java

我编写了一个简单的代码来将控制台的输出打印到BytreArrayOutputStream。我使用的是JDK 1.7。但是当我想要缓冲区为String时,我不能使用方法BytreArrayOutputStream.ToString(String Charset)..

它没有此功能。我使用的是JDk1.7,应该支持它。 我在windoews 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

任何帮助都值得赞赏。

2 个答案:

答案 0 :(得分:4)

您需要在toString()本身上调用ByteArrayOutputStream,而不是包裹它的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");

答案 1 :(得分:1)

看起来您的目标是通过PrintStream收集进入System.out的所有内容,并最终将其作为String。这是对的吗?

假设现在,你在这里使用两种不同的结构。 PrintStreamByteArrayOutputStreamPrintStream软管,而BAOS是储罐。将所写的字符想象成通过PrintStream 进入 BAOS坦克的水。

当你完成后,你对水箱中的水感兴趣,软管里面没有任何东西。

这就是你需要通过toString从BAOS中获取字节的原因。