本サイトはプロモーション(広告)が含まれています。

【Java】ファイルコピーするときファイルが存在する場合に上書きする方法

【Java】ファイルコピーするときファイルが存在する場合に上書きする方法

Javaでファイルコピーするときファイルが存在する場合に上書きするには以下のように実装します。

  1. 「import static java.nio.file.StandardCopyOption.*;」にてインポートする
  2. Files.copyメソッドの第三引数に「REPLACE_EXISTING」を指定する
Path コピー元 = Paths.get("Z:/WKJava/ファイル作成/test.txt");
Path コピー先 = Paths.get("Z:/WKJava/ファイル作成/test2.txt");
System.out.println(Files.exists(コピー元));
System.out.println(Files.exists(コピー先));
Files.copy(コピー元, コピー先);
System.out.println(Files.exists(コピー元));
System.out.println(Files.exists(コピー先));

// 実行結果
true
true
true
true

以下、copyメソッドおよび上書きに「REPLACE_EXISTING」の指定に関する説明です。

ファイルをコピーするにはcopyメソッドを使用します。

Files.copy(コピー元, コピー先);
// コピー元からコピー先へファイルをコピーします。
// 引数はPathを使用する必要があります。

具体的には、以下のように実装します。

Path コピー元 = Paths.get("Z:/WKJava/ファイル作成/test.txt");
Path コピー先 = Paths.get("Z:/WKJava/ファイル作成/test2.txt");
System.out.println(Files.exists(コピー元));
System.out.println(Files.exists(コピー先));
Files.copy(コピー元, コピー先);
System.out.println(Files.exists(コピー元));
System.out.println(Files.exists(コピー先));

// 実行結果
true
false
true
true

ただし、コピー先にファイルが存在する場合、「java.nio.file.FileAlreadyExistsException」のエラーが発生します

Path コピー元 = Paths.get("Z:/WKJava/ファイル作成/test.txt");
Path コピー先 = Paths.get("Z:/WKJava/ファイル作成/test2.txt");
System.out.println(Files.exists(コピー元));
System.out.println(Files.exists(コピー先));
Files.copy(コピー元, コピー先);
System.out.println(Files.exists(コピー元));
System.out.println(Files.exists(コピー先));

// 実行結果
true
true
Exception in thread "main" java.nio.file.FileAlreadyExistsException: Z:\WKJava\ファイル作成\test2.txt
at java.base/sun.nio.fs.WindowsFileCopy.copy(WindowsFileCopy.java:123)
at java.base/sun.nio.fs.WindowsFileSystemProvider.copy(WindowsFileSystemProvider.java:283)
at java.base/java.nio.file.Files.copy(Files.java:1294)

 コピー先にファイルが存在することがあり得るのであれば、「REPLACE_EXISTING」の指定することで、上書き保存してエラーとなりません。

※「import static java.nio.file.StandardCopyOption.*;」のインポートが必要です。

Path コピー元 = Paths.get("Z:/WKJava/ファイル作成/test.txt");
Path コピー先 = Paths.get("Z:/WKJava/ファイル作成/test2.txt");
System.out.println(Files.exists(コピー元));
System.out.println(Files.exists(コピー先));
Files.copy(コピー元, コピー先);
System.out.println(Files.exists(コピー元));
System.out.println(Files.exists(コピー先));

// 実行結果
true
true
true
true

Javaの記事一覧へ

PAGE TOP