【问题标题】:Using printWriter to write to a byte buffer?使用 printWriter 写入字节缓冲区?
【发布时间】:2018-02-17 00:34:11
【问题描述】:

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

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 中的字节缓冲区在打印写入器写入后为空?我不确定这是否是使用 PrintWriter 写入字节数组的唯一方法。还有其他方法吗?

【问题讨论】:

    标签: java buffer printwriter


    【解决方案1】:

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

    1. 使用the appropriate constructor 使PrintWriter 可自动刷新并调用println 以包含换行符。
    PrintWriter pw = new PrintWriter(byteStream, true);
    pw.println("TEST STRING");
    
    1. 或者,您可以显式刷新它。
    PrintWriter pw = new PrintWriter(byteStream);
    pw.write("TEST STRING");
    pw.flush();
    
    1. 关闭PrintWriter 会刷新输出(如评论中所述)。

    【讨论】:

    • 写完也可以pw.close()。
    • @SpencerWieczorek 没错;我已将其添加到我的答案中。
    • 哦,有趣的是,第二个选项奏效了!我想知道为什么第一个选项没有=/
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2016-09-21
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2023-03-11
    相关资源
    最近更新 更多