私は、かなりの量のデータをフォルダーからフォルダーに (一度に数十枚の写真の範囲で) コピーする必要があるプログラムを作成しています。もともと私はjava.io.FileOutputStream
単純にバッファに読み込んで書き出すために使用していましたが、java.nio.FileChannel
.
私が持っているデータを使用して本格的な管理されたテストを実行するためのリソースはありませんが、それぞれの利点が何であるかについてコンセンサスはないようです (FileChannel がスレッドセーフであることを除いて)。一部のユーザーFileChannel
は、小さなファイルに最適であると報告していますが、他のユーザーは、大きなファイルで大幅な速度の向上を報告しています。
FileChannel
そもそも作成の意図が何であったかを誰かが正確に知っているかどうか疑問に思っています.より良いパフォーマンスのために設計されたのでしょうか? どのような場合に?また、一般的な種類のデータに対して決定的なパフォーマンスの向上がありますか?それとも、十分に専門化されたデータを扱っていないため、違いは些細なものであると予想されますか?
編集:私のデータはスレッドセーフである必要はないと仮定します。