2009-07-10 11 views
5

私のJavaコードでは、httpリクエストでクライアントからファイルを取得し、それをファイルに変換する機能があります。私は、この行いますファイル作成時に8192バイト

byte[] buffer = new byte[8192]; 

8192バイト(8キロバイト)の何がここに意味しますか?

This is one of the responses that I got私はそのコードを理解していることを確認します。

+1

これは、約8.2kbのデータを保持するバッファを作成していることを意味します。 –

+0

http://stackoverflow.com/questions/1111130/basic-file- upload-in-gwt/1111606#1111606 –

+3

@Ed Swangren:8.2?どこでそれを手に入れたのですか?正確に8.0kbのように見えます。 1024 * 8. – Beska

答えて

10

これは、8kBブロックを一度に読み書きするためにバッファを使用することを示しています。この数字はかなり恣意的ですが、パフォーマンス上の理由から、ファイルを書き込むときに512バイトの倍数を使用するのが理にかかります。ディスクのクラスタサイズの倍数であることが好ましいです。ほとんどの場合、8kBは妥当なバッファサイズです。

+0

なぜ512の倍数ですか? – Pacerier

1

私が推測しなければならないのは、ファイルを読むために使用しているスペースの量です。コードの残りの部分がなければ、それをすべて読み込み、それを8kに詰め込んだり、それを8kずつ読み込んだりしてファイルにダンプするかどうかはわかりません。

+0

この回答を確認してください:http://stackoverflow.com/questions/1111130/basic-file-upload-in-gwt/1111606#1111606 ここに私はその番号を持っています – Maksim

+4

それから読んでいる8kを一度に取り出し、それをファイルに送信してから次の8kチャンクを取得します。正当な理由は、関数を呼び出すホイールを回転させることと、ファイルの終わりに達するときにスペースを無駄にすることの間で、8kが合理的なトレードオフであることです。なぜなら、多くのファイルシステムでブロックサイズにかなり近いからです。 –

+0

配列宣言/定義以外のソースコードを表示していないときに、どうすればよいでしょうか? –

2

これはバイト配列のサイズです。つまり、バッファは一度に8192バイトを保持します。

2

8192は、ネットワーク経由で送信するパッケージの最大サイズです。 charバッファ[8192]。/*単一パケットは通常8192バイトより大きくない*/ 512バイトが小さすぎます。

+2

そのクレームに関する**参考文献**を提供できますか?「8192はネットワーク経由で送信するパッケージの最大サイズ」ですか? –

関連する問題