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仕様を理解する!
今後、気をつけたいと思います。。。