Java中System.out.println()的字符限制是多少?

8

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

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

我要打印的XML字符串非常大。

为什么会出现这种情况?


你能发布一张截图展示你的输出结果吗? - ring bearer
我无法说出足够的感谢之词。为什么Eclipse会以这样糟糕的方式实现它呢... - David Brossard
6个回答

20

您在Eclipse中遇到这个问题吗?如果是:

编辑

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

来源


2
友情提示,链接式答案通常不被鼓励在Stack Exchange网站上。回答应该能够独立存在,而不依赖于外部资源。这样做的原因在这里这里以及几篇其他文章中有描述。通常我会标记这样的帖子,然后管理员将会删除它们,但是因为你刚刚发布了它,所以我想给你一个更新的机会(或者可能赚取一些声望!)。 - Pops
我明白 - 但在这种特殊情况下,答案就在链接网站的顶部。 无论如何 - 当链接的网站关闭时,将解决方案放在SO上可能会很方便。所以 - 编辑完成... - quaylar

4

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

考虑从Java写入日志文件,或将程序的标准输出重定向到文件中:

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

+1 - Java端没有限制(例如在输出堆栈中)。 - Stephen C
1
@Stephen_C 输出堆栈?正如已经指出的那样,对于单个println调用存在限制,但它非常大。 - Jivings

4
您受到Java String的最大大小限制。这应该相当于长度Integer.MAX_VALUE(2147483647),这是数组的最大大小,因为String是char数组。
否则,正如其他人所说,这是Eclipse控制台容量限制。

3

2

我知道把非常长的字符串打印到Eclipse控制台中,会导致该字符串的部分或全部变得不可见。你可能需要将xml拆分成多个块。如果你只看到了xml的尾部部分,那么我猜测可能是你的控制台缓冲区截断了它的一部分内容。@Quaylar发布了一个有关此问题的链接。


0

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

您最好的选择是流式输出并逐部分编写以确保您获得所有内容。


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接