この投稿では、Javaでファイルをコピーする方法について説明します。

ソースファイルの内容をJavaで指定されたターゲットファイルにコピーする方法はいくつかあります。次の各ソリューションは、ターゲットファイルが存在しない場合にそれを作成します。ターゲットファイルが存在する場合、そのファイルはソースファイルの内容で上書きされます。ファイルの内容のみをターゲットファイルにコピーする必要があり、ファイル属性は無視できることに注意してください。

ファイルのコピーは不可分操作ではないことに注意してください。 I / Oエラー、電力損失、プロセス終了などの場合、ターゲットファイルが不完全なままになる可能性があります。

1.使用する NIO

Java 7以降では、 java.nio.file.Files、ファイル、ディレクトリ、またはその他のタイプのファイルを操作するいくつかの静的メソッドを提供します。ファイルをターゲットファイルにコピーするには、 copy(Path source, Path target, CopyOption… options) 方法。

このメソッドは、ソースファイルとターゲットファイル、およびコピーの実行方法を指定するオプションのパラメーターを取ります。デフォルトでは、ターゲットファイルがすでに存在する場合、コピーは失敗します REPLACE_EXISTING オプションが指定されています。ソースとターゲットが同じファイルの場合、メソッドはファイルをコピーせずに完了します。ソースファイルまたは宛先ディレクトリのいずれかが存在しない場合は、 java.nio.file.NoSuchFileException スローされます。

コードをダウンロード

2.Guavaライブラリの使用

Guava’s Files クラスには、ファイルを操作するためのユーティリティメソッドがいくつかあります。私たちはそのを使用することができます copy(File from, File to) メソッド。1つのファイルから別のファイルにすべてのバイトをコピーします。

このメソッドは、宛先ファイルが存在しない場合、宛先ファイルを保持するディレクトリを作成しません。投げる java.io.FileNotFoundException ソースファイルが存在しない場合、 java.io.IOException I/Oエラーの場合。もしも tofrom 同じファイルを参照し、 java.lang.IllegalArgumentException スローされます。

コードをダウンロード

3. ApacheCommonsIOの使用

使用することもできます FileUtils ApacheCommonsIOライブラリのクラス copyFile(File srcFile, File destFile) ファイルを新しい場所にコピーするメソッド。

Apache Commons IOを使用する主な利点は、宛先ファイルが存在しない場合に、宛先ファイルを保持するディレクトリが作成されることです。宛先ファイルとソースファイルが同じである場合、このメソッドはスローします java.io.IOException、およびソースファイルが存在しない場合は、 java.io.FileNotFoundException スローされます。

コードをダウンロード

4.ストリームの使用

プレーンJavaを使用して、独自のコピーロジックを作成することもできます FileInputStreamFileOutputStream。必要なのは、あるファイルから別のファイルにすべてのバイトをコピーするためのバッファーです。これを以下に示します。

ソースとターゲットが同じファイルの場合、そのファイルの内容は削除されることに注意してください。ソースファイルまたは宛先ディレクトリが存在しない場合は、 java.io.FileNotFoundException スローされ、 java.io.IOException I/Oエラーの場合にスローされます。

コードをダウンロード

5.使用する FileChannel

ソースファイルからターゲットファイルにバイトを転送するには、 transferFrom() からの方法 FileChannel クラス。ファイルの読み取り、書き込み、マッピング、および操作のためのチャネルです。

ソースとターゲットが同じファイルの場合、そのファイルの内容は削除されることに注意してください。ソースファイルまたは宛先ディレクトリが存在しない場合は、 java.io.FileNotFoundException スローされ、 java.io.IOException I/Oエラーの場合にスローされます。

コードをダウンロード

これで、Javaでファイルをコピーすることができます。

 
こちらも参照:

Javaでディレクトリをコピーする