8

JavaのSystem.out.println(String x)ステートメントの出力に文字制限はありますか?

を使用して Web サービス呼び出しから XML を出力しようとするとSystem.out.println()、実際にはその一部しかコンソールに出力されません。

印刷しようとしている XML 文字列は巨大です。

なぜこうなった?

4

6 に答える 6

20

Eclipse 内でこれを経験していますか? もし、そうなら:

編集

  1. [ウィンドウ] > [設定] > [実行/デバッグ] > [コンソール] に移動します。
  2. [コンソール出力を制限する] のチェックを外します (または、コンソールのバッファ サイズを増やすこともできます)。

ソース

于 2012-01-18T14:58:42.670 に答える
4

Java String の最大サイズに制限されています。それで全部です。String は char 配列であるため、これは配列の最大サイズである length Integer.MAX_VALUE (2147483647) と同等である必要があります。

それ以外の場合は、他の人が言っているように、Eclipse コンソールの容量制限です。

于 2012-01-18T15:00:02.930 に答える
3

Eclipse を使用している場合、Eclipse の出力コンソールの容量に制限があるためです。この SO の質問を参照してください: Eclipse 出力コンソールの容量を増やすにはどうすればよいですか?

于 2012-01-18T14:59:21.750 に答える
3

私の推測では、コンソールに表示できる行数が限られているため、文字列の最後の部分しか表示されないということです。

Java からファイルにログを記録するか、プログラムからの標準出力をファイルにリダイレクトすることを検討してください。

java com.foo.bar.Main > output.log
于 2012-01-18T14:57:52.033 に答える
2

非常に長い文字列を Eclipse コンソールに出力すると、文字列の一部またはすべてが見えなくなることを私は知っています。xml をチャンクに分割したい場合があります。xml の末尾部分しか表示されていない場合は、コンソール バッファーがその一部を切り取っていると思います。@Quaylar がこれに関するリンクを投稿しました。

于 2012-01-18T15:00:22.880 に答える
0

実際には明示的な最大値はありませんが、文字列のオフセットは int によって決定されるため、Integer.MaxValue は 1 つの制限 IMO になります。また、使用可能なメモリにも依存します。

あなたの最善の策は、出力をストリーミングし、一度に部分的に書き込んで、すべてを確実に取得することです。

于 2012-01-18T15:00:14.597 に答える