2012年6月2日土曜日

New I/O 2 Files.copyの動作まとめ

copy(Path source, Path target, CopyOption... options)

コピー元が存在しなかった場合

NoSuchFileExceptionが発生

コピー先が存在した場合

FileAlreadyExistsExceptionが発生
※ StandardCopyOption.REPLACE_EXISTINGを指定していれば上書き可能。

ディレクトリへの上書き

StandardCopyOption.REPLACE_EXISTINGを指定していても、ディレクトリ内にファイルかディレクトリが存在すればDirectoryNotEmptyExceptionが発生

コピー元がファイルの場合

(ファイル→ファイル)

コピー先が存在しない場合→問題無し

(ファイル→ディレクトリ)

上書きを指定した場合→ディレクトリと同じ名前のファイルとして上書き変更される
コピー先が存在しない場合→拡張子無しのファイルとみなされ、ディレクトリと判断されない
(ファイル→ファイルと同義)

コピー元がディレクトリの場合

(ディレクトリ→ファイル)

上書きを指定した場合→ファイルと同じ名前のディレクトリとして上書き変更される
コピー先が存在しない場合→(ディレクトリ→ディレクトリと同義)
※宛先に拡張子を付けたとしても、○○○.拡張子という名前のディレクトリとして扱われる

(ディレクトリ→ディレクトリ)

コピー先が存在しない場合→問題無し

0 件のコメント:

コメントを投稿