私は、複数の接続を使用してhttpでファイルをダウンロードできる基本ダウンロードマネージャを開発しています。ダウンロードの終わりに、ファイルの各部分を含む複数の一時ファイルがあります。Javaでバイナリファイルをマージする最善の方法
これで、それらを1つのファイルにマージします。
出力ストリームを作成してストリームを入力し、入力を適切な順序で出力にパイプするだけでは簡単ではありません。
しかし、私はそれをより効率的に行う方法はあるのでしょうか?私の理解から、ここで何が起きるかは、JVMがバイトごとにバイトを読み込み、バイトごとにバイトを出力するということです。
だから基本的に私が持っている:いくつかのCPUの命令は、おそらく実行され、バイトはおそらくCPUのキャッシュ にコピーされます - - メモリ に店舗バイト - - ディスク からバイトを読み ディスクにバイトを書き込み
ディスクにプロセスを保存する方法があるかどうか疑問に思っていましたか?私は分かりやすいのか分かりませんが、基本的にディスクに "ディスクを入れて、これらのファイルを取り出して、それらのファイルを作成してください"
短い文では、私はCPUを&可能な限り低い。
ここをクリックしてください:https://thomaswabner.wordpress.com/2007/10/09/fast-stream-copy-using-javanio-channels/ –
ファイルを連結することはあまりにもまれであり、一般的な低レベルDOS操作。しかし、上記のリンクは長い道のりです。最適化の1つは、(最も一般的な)ディスクページサイズの倍数のサイズを持つ大きな中間バッファを使用することです。 – usr2564301
@RafaelOsipov:これはかなり良い方法です。 – Tiller