0

BufferedWriterで大きな文字列(5Mb、1つのxmlファイル、すべて1行)を送信する際に問題がありますか?

それは非常に高速に動作します。数Kより長い行を許可しない黄金律はありますか?次に、追加のファイル転送プロトコルを作成する必要があります... :-(

4

4 に答える 4

2

それBufferedWriter自体は物事がどれだけ速く進むかを決定しません。それはあなたのためにいくつかのバッファリングを行うだけです。それは本当にあなたが何に書いているかに依存します...LANでは、5MBは特に大きくはありませんが、モバイル接続では長い時間がかかります。

言い換えれば、それは状況によって異なります。長い行を禁止する「黄金律」はありません...しかし、使用しているプロトコルがわかりません。特定のプロトコルでサイズ制限がある可能性があります。より詳細な回答が必要な場合は、質問にさらに詳細を追加する必要があります...

于 2011-04-27T15:12:41.693 に答える
0

それが機能する場合、それは機能します。それが機能しない場合は、文字列をチャンクに分割します。

于 2011-04-27T15:12:13.350 に答える
0

ちょっとした問題は受信側です - これはそのような長い行を受け入れますか? 一部のプログラムは長い行を受け取る準備ができているかもしれませんが、短い行の一般的なケースに合わせて最適化されているため、長い行を使用すると速度が低下します。

\nまた、行を正確に構成するものもシステムに依存します - ほとんどの場合、(Unix) または\r\n(DOS/Windows/ほとんどの公共のインターネット プロトコル)の後に続くことを意味します。

また、書き込まれた行BufferedWriterwriteメソッドの呼び出しは 2 つの直交するものであることに注意してくださいwrite。1 行だけを書き込むために複数の呼び出しを行うことも、1 回のwrite呼び出しで複数の行を書き込むこともできます。

于 2011-04-30T17:52:48.873 に答える
0

あなたが書いているのはこの 5Mb 行だけですか? もしそうなら、 aはラップBufferedWriterの上に何も追加していません。WriterABufferedWriterは、小さな書き込みをたくさん行っていて、それらを大きなチャンクにバッファリングして、基になる に送信したい場合に便利です。Writerこれにより、そのメソッドにオーバーヘッドが発生する可能性がありますwrite()(たとえば、ディスクのシーク時間/回転遅延)。

于 2011-04-27T16:02:55.257 に答える