Java 使用printWriter写入字节缓冲区?

Java 使用printWriter写入字节缓冲区?,java,buffer,printwriter,Java,Buffer,Printwriter,我不确定这是否可能。 我试着做一些类似的事情 ByteArrayOutputStream byteStream = new ByteArrayOutputStream(); PrintWriter pw = new PrintWriter(byteStream); pw.write("TEST STRING"); 当我尝试执行System.out.println(byteStream.toString());它打印一个空字符串。 当我尝试执行System.out.println(byteStr

我不确定这是否可能。 我试着做一些类似的事情

ByteArrayOutputStream byteStream = new ByteArrayOutputStream();
PrintWriter pw = new PrintWriter(byteStream);
pw.write("TEST STRING");
当我尝试执行
System.out.println(byteStream.toString())
;它打印一个空字符串。 当我尝试执行
System.out.println(byteStream.size())
时,它打印0,
这意味着打印写入程序写入ByteArrayOutputStream后,ByteArrayOutputStream中的字节缓冲区为空?我不确定这是否是使用PrintWriter写入字节数组的唯一方法。还有其他方法吗?

您的输出需要刷新到流中。您可以执行以下操作之一:

  • 使用并调用
    println
    以包含换行字符,使
    PrintWriter
    自动可冲洗
  • 或者,您可以显式地刷新它
  • 关闭
    PrintWriter
    将刷新输出(如注释中所示)

  • 您的输出需要刷新到流中。您可以执行以下操作之一:

  • 使用并调用
    println
    以包含换行字符,使
    PrintWriter
    自动可冲洗
  • 或者,您可以显式地刷新它
  • 关闭
    PrintWriter
    将刷新输出(如注释中所示)

  • 如果他们写完了,他们也可以
    pw.close()
    。@SpencerWieczorek是的;我已经在我的答案中添加了这个选项。哦,有趣的是,第二个选项起作用了!我想知道为什么第一个选项没有=/如果他们完成了编写,他们也可以
    pw.close()
    。@SpencerWieczorek是的;我已经在我的答案中添加了这个选项。哦,有趣的是,第二个选项起作用了!我想知道为什么第一个选项没有=/
    PrintWriter pw = new PrintWriter(byteStream, true);
    pw.println("TEST STRING");
    
    PrintWriter pw = new PrintWriter(byteStream);
    pw.write("TEST STRING");
    pw.flush();