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

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

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

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

为什么会这样?

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

编辑

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

资源

我的猜测是你只能看到String的最后一部分,因为它可以显示有限数量的行。

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

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

如果您使用的是Eclipse,那是因为Eclipse输出控制台的容量有限制。 看到这个问题: 如何增加Eclipse输出控制台的容量?

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

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

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

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

您最好的选择是一次流输出输出并写入部分,以确保您完成所有操作。