2012-01-18 18 views
6

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

當我嘗試使用System.out.println()從Web服務調用中打印某些XML時,實際上只打印了其中的一部分內容。

我試圖打印的XML字符串很大。

這是怎麼發生的?

+0

你可以發佈截圖來顯示你的輸出的性質? – 2012-01-18 14:59:53

回答

14

你在Eclipse中遇到此?如果是的話:

編輯

  1. 去窗口>首選項>運行/調試>控制檯
  2. 取消選中 「限制控制檯輸出」(或者,您也可以增加控制檯緩衝區的大小)

Source

+2

只是一個友好的提示,在Stack Exchange站點上通常不鼓勵鏈接回答。答案應該能夠獨立,而不依賴於外部資源。這裏描述的原因[這裏](http://meta.stackexchange.com/questions/8231/are-answers-that-just-contain-links-elsewhere-really-good-answers),[這裏](http ://meta.stackexchange.com/q/116301/131713)和其他幾個帖子。通常我只是標記這樣的帖子,mods然後刪除它們,但是既然你剛剛發佈了它,我想我會給你一個機會來首先更新(並可能賺取一些代表!)。 – Pops 2012-01-18 15:00:39

+0

我明白 - 但在這種特殊情況下,答案就在鏈接網站之上。 無論如何 - 一旦鏈接網站出現故障,在SO上提供解決方案可能會很方便。所以 - 編輯完成... – quaylar 2012-01-18 15:05:43

3

我的猜測是你只能看到字符串的最後一部分,因爲控制檯只能顯示有限的行數。

考慮的Java記錄到文件,或從程序的標準輸出重定向到一個文件:

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

+1 - Java端沒有限制(例如在輸出堆棧中)。 – 2012-01-18 14:59:52

+1

@Stephen_C輸出堆棧?正如已經指出的那樣,對於println的單個調用是有限制的,但是它是巨大的。 – Jivings 2012-01-18 15:24:18

3

你受限於Java字符串的最大大小。就這樣。這應該等於長度Integer.MAX_VALUE(2147483647),它是數組的最大大小,因爲String是char數組。

否則,正如其他人所說,這是Eclipse控制檯的容量限制。

0

確實沒有明確的最大值,但字符串中的偏移量是由int確定的,所以Integer.MaxValue將是IMO的一個限制。這也取決於你的可用內存。

你最好的選擇是一次流式輸出和寫入部分,以確保你得到它。

1

我知道在Eclipse控制檯中打印很長的字符串會導致部分或全部字符串變爲不可見。你可能想把你的xml分解成塊。如果你只看到xml的尾部,那麼我猜測你的控制檯緩衝區會裁剪掉它的一部分。 @Quaylar發佈了一個關於此的鏈接。