2012-01-18 4 views
6

Есть ли ограничение символов для вывода инструкции Java System.out.println(String x)?Предел символов для System.out.println() в Java

Когда я пытаюсь напечатать некоторый XML из вызова веб-службы, используя System.out.println(), только часть его фактически напечатана в консоли.

Строка XML, которую я пытаюсь напечатать, огромна.

Почему это происходит?

+0

можете ли вы опубликовать скриншот, чтобы показать характер вашего вывода? –

ответ

14

Вы испытываете это в Eclipse? Если да:

EDIT:

  1. Перейти к Window> Preferences> Run/Debug> Консоли
  2. Снимите флажок "Ограничить Console Output" (. В качестве альтернативы вы можете увеличить размер буфера консоли)

Source

+2

Просто дружественный совет, ссылки только для ответов, как правило, обескуражены на сайтах Exchange. Ответы должны быть в состоянии стоять отдельно, не завися от внешних ресурсов. Причины этого описаны [здесь] (http://meta.stackexchange.com/questions/8231/are-answers-that-just-contain-links-elsewhere-really-good-answers), [здесь] (http : //meta.stackexchange.com/q/116301/131713) и в нескольких других сообщениях.Обычно я просто помещаю сообщения вроде этого, а моды затем удаляют их, но, поскольку вы только что разместили его, я думал, что дам вам возможность обновить (и, возможно, заработать немного репутации!). – Pops

+0

Я понимаю - но в этом специальном случае ответ прямо поверх связанного сайта. Anyways - возможно, было бы удобно иметь решение на SO, как только связанный сайт опустится. Итак - отредактируйте сделанное ... – quaylar

3

Я предполагаю, что вы видите только последнюю часть строки, потому что консоль имеет ограниченное количество строк, которые она может отображать.

Рассматривают вход в файл из Java, или перенаправлять стандартный вывод программы в файл:

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

+1 - на стороне Java нет ограничений (например, в стеке вывода). –

+1

@Stephen_C Выходной стек? Как уже отмечалось, для одного вызова println существует предел, но он огромен. – Jivings

3

Вы ограничены максимальным размером Java String. Это все. Это должно быть эквивалентно длине Integer.MAX_VALUE (2147483647), которая является максимальным размером массива, поскольку String является массивом символов.

В противном случае это ограничение пропускной способности консоли Eclipse, как говорили другие.

0

На самом деле не существует явного максимума, но смещение в строке определяется int, поэтому Integer.MaxValue будет одним из ограничений IMO. Это также будет зависеть от вашей доступной памяти.

Лучше всего будет передавать поток и записывать порции за раз, чтобы обеспечить его получение.

1

Я знаю, что печать очень длинных строк в консоли Eclipse приводит к тому, что часть или вся строка становится невидимой. Возможно, вам захочется разбить xml на куски. Если вы видите только хвостовую часть xml, я бы предположил, что ее консольный буфер обрезает часть его. @Quaylar опубликовал ссылку об этом.

Смежные вопросы