Java 中 System.out.println() 的字符限制

Posted

技术标签:

【中文标题】Java 中 System.out.println() 的字符限制【英文标题】:Character limit for System.out.println() in Java 【发布时间】:2012-02-13 07:03:58 【问题描述】:

Java 的System.out.println(String x) 语句的输出有字符限制吗?

当我尝试使用 System.out.println() 从 Web 服务调用中打印一些 XML 时,实际上只有一部分在控制台中打印。

我要打印的 XML 字符串很大。

为什么会这样?

【问题讨论】:

你能张贴截图来显示你的输出的性质吗? 感谢你的一切我都说不完。为什么 Eclipse 会以如此糟糕的方式实现它... 【参考方案1】:

您是否在 Eclipse 中遇到过这种情况?如果是:

编辑

    转到窗口 > 首选项 > 运行/调试 > 控制台 取消选中“限制控制台输出”(或者,您可以增加控制台缓冲区大小。)

Source

【讨论】:

只是一个友好的提示,在 Stack Exchange 网站上通常不鼓励仅提供链接的答案。答案应该能够独立存在而不依赖于外部资源。其原因在here、here 和其他几个帖子中有所描述。通常我只是标记这样的帖子,然后模组然后删除它们,但既然你刚刚发布它,我想我会给你一个更新的机会(并可能获得一些代表!)。 我明白 - 但在这种特殊情况下,答案就在链接网站的顶部。无论如何 - 一旦链接的站点出现故障,在 SO 上使用解决方案可能会很方便。所以 - 编辑完成...【参考方案2】:

您受限于 Java 字符串的最大大小。就这样。这应该等价于长度 Integer.MAX_VALUE (2147483647),它是数组的最大大小,因为 String 是 char 数组。

否则,正如其他人所说,这是 Eclipse 控制台容量限制。

【讨论】:

【参考方案3】:

我的猜测是您只能看到字符串的最后一部分,因为控制台可以显示的行数有限。

考虑从 Java 记录到文件,或将程序的标准输出重定向到文件:

java com.foo.bar.Main > output.log

【讨论】:

+1 - Java 端没有限制(例如在输出堆栈中)。 @Stephen_C 输出堆栈?正如已经指出的那样,对 println 的一次调用有一个限制,但它是巨大的。【参考方案4】:

如果您使用的是 Eclipse,那是因为 Eclipse 输出控制台的容量有限制。看到这个问题:How do I increase the capacity of the Eclipse output console?

【讨论】:

【参考方案5】:

我知道在 Eclipse 控制台中打印很长的字符串会导致部分或全部字符串变得不可见。您可能希望将 xml 分成块。如果您只看到 xml 的尾部部分,那么我猜它是您的控制台缓冲区修剪掉它的一部分。 @Quaylar 发布了一个关于此的链接。

【讨论】:

【参考方案6】:

实际上并没有明确的最大值,但字符串中的偏移量由 int 确定,因此 Integer.MaxValue 将是 IMO 的一个限制。这也取决于您的可用内存。

您最好的选择是一次流式传输输出和写入部分,以确保您得到所有​​内容。

【讨论】:

以上是关于Java 中 System.out.println() 的字符限制的主要内容,如果未能解决你的问题,请参考以下文章

java中System.out.print()与System.out.println()与System.out.printf()的差别

JAVA中System.out.println和System.out.print有什么区别

java中的system.out.println()和JSP中out.println()差别

java中System.out.println中的out是啥,是一个类???

Java 中 System.out.println() 的字符限制

java中system.out.println()是什么意思