gpt4 book ai didi

java - 使用 printwriter 与 System.out.print 打印整数

转载 作者:行者123 更新时间:2023-12-01 23:18:23 25 4
gpt4 key购买 nike

我正在尝试将数组中的字节读取到控制台,如果我使用 PrintWriter 对象,则不会在屏幕上打印任何内容,但是,使用 System.out.println() 可以正常工作。为什么?

这是我的代码:

private static void readByteArray(byte[] bytes) {
ByteArrayInputStream bais = new ByteArrayInputStream(bytes);
PrintWriter pw = new PrintWriter(System.out);

int c;
while((c = bais.read()) != -1) {
pw.print(c);
}

该代码不起作用,但如果我这样做:

private static void readByteArray(byte[] bytes) {
ByteArrayInputStream bais = new ByteArrayInputStream(bytes);
PrintWriter pw = new PrintWriter(System.out);

int c;
while((c = bais.read()) != -1) {
System.out.println(c);
}

打印出来了。

有什么区别?据此http://docs.oracle.com/javase/7/docs/api/java/io/PrintWriter.html PrintWriter 方法 print(int i) 打印一个整数,所以我很困惑。

最佳答案

System.out变量引用 PrintStream 类型的对象其中包含 BufferedOutputStream (至少在 Oracle JDK 7 中)。当您调用 printX() 之一时或write() PrintStream 上的方法,它在内部刷新底层 BufferedOutputStream 的缓冲区。

PrintWriter 不会发生这种情况。你必须自己做。或者,您可以创建 PrintWriterautoFlush属性设置为true每次写入时都会刷新。

PrintWriter pw = new PrintWriter(System.out, true);

如果你读过这篇文章constructor's javadoc ,它指出

  • autoFlush A boolean; if true, the println, printf, or format methods will flush the output buffer

关于java - 使用 printwriter 与 System.out.print 打印整数,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/20890762/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com