LoginSignup
5
1

More than 5 years have passed since last update.

Files.copy(pathA, pathB)のエラー時の挙動について

Posted at

JavaのFiles.copy(pathA, pathB)がエラーであった場合の挙動で少しハマったため、メモしておく。

Files.copy(pathA, pathB)はファイルAをファイルBにコピーするAPI。
実行すると、下記のエラーが発生。

コピーエラー
java.nio.file.NoSuchFileException: \pathA-> \pathB

pathAのファイルが存在しない!?と思い、実際にファイルパスの示す先のフォルダを確認したところ、ファイルが存在していた。
存在するのに何故「存在しない」とのエラーが出るのか!?と考えたため、ドハマり。。。

あの手この手を試した後に、Files.copy(pathA, pathB)のjavaDocをちゃんと確認。すると、

Files.copy(Path source,Path target)のjavaDoc(抜粋)

デフォルトでは、ソースとターゲットが同じファイルである場合を除き(その場合、このメソッドはファイルをコピーしないで終了する)、ターゲット・ファイルがすでに存在するか、シンボリック・リンクである場合にそのコピーは失敗します。

とある。ターゲット・ファイルのパスはどうなっているのか!?とやっと気づく!

pathBの示す先のフォルダを開こうとするとパス内の最後のディレクトリが存在していないことがわかった!!

今回の教訓

パスの存在確認はきっちりする!
使用するAPIについてはよくAPI仕様を理解する!

今後、気をつけたいと思います。。。

5
1
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
5
1