8

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

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

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

为什么会这样?

4

6 回答 6

20

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

编辑

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

来源

于 2012-01-18T14:58:42.670 回答
4

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

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

于 2012-01-18T15:00:02.930 回答
3

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

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

java com.foo.bar.Main > output.log
于 2012-01-18T14:57:52.033 回答
3

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

于 2012-01-18T14:59:21.750 回答
2

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

于 2012-01-18T15:00:22.880 回答
0

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

您最好的选择是一次流式传输输出和写入部分,以确保您获得所有信息。

于 2012-01-18T15:00:14.597 回答