入出力ストリームを利用したコピー処理を行うサンプルプログラムを紹介します。ストリームを利用したコピー処理では、読み込みバファサイズを大きくすることで、大きなファイルでも比較的高速にコピーを行えます。サンプルプログラムではデータの読み込みバッファーサイズを引数で指定可能としています。指定した読み込みバファ領域はJavaVMのヒープ内に確保されますので、あまり大きくしすぎても効率が悪くなります。そのため、ファイルをコピーする上で、効率の良いデータ読み込みバッファサイズについても同時に確認します。データの読み込みバッファサイズ(KB)です。入力ストリームから出力ストリームへデータの書き込みを行います。ストリームを閉じます。データの読み込みバッファサイズ(KB)です。ファイル「100M.txt」を用意しました。サンプルの実行は以下の環境で行いました。1KB、100KB、1000KB、10000KB単位で同様のコピー処理を行った結果を以下にまとめています。単位に指定すると、コピー処理中のヒープ使用量、処理時間において効率が良いと言う結果が出ました。程度)でも同様の結果が得られました。指定するのが良いかと思います。メソッドを利用することで、さらに効率良くファイルコピーを行うことができます。利用して簡単・高速にファイルコピーを行う方法を紹介します。ファイルをコピーするサンプルプログラムを紹介します。メソッドを利用します。データの読み込みに必要なバッファを意識すること無く、コピー処理のプログラムを記述でき、最もシンプルなコーディングとなります。基本的には他のデバイスとのあいだでデータの入出力を行うための伝送路を示すようです。ファイルへの読み込み、書き込みを行うための接続を表すクラスとなります。メソッドは、コピー元となるファイルから、コピー先のチャネルにバイトデータを転送することができます。ドキュメントから引用。target)このチャネルのファイルから指定された書き込み可能なバイトチャネルへバイトを転送します。このチャネルからデータを読み込んでターゲットチャネルに書き込むという単純なループよりも、このメソッドのほうがずっと効率的に処理できる可能性があります。多くのオペレーティングシステムは、ファイルシステムキャッシュからターゲットチャネルへバイトを直接転送できます。このとき、バイトのコピーは行われません。メソッドを使用する方法等)より高速にコピー処理が行えました。ファイルのコピーを行います。コピー処理にはFileChannel#transferToメソッドを利用します。チャネルをクローズします。ファイル「100M.txt」を用意しました。ファイルを作成します。サンプルの実行は以下の環境で行いました。秒程度で完了しました。