3

基本上阅读教程,我遇到了一点,它解释了如何使用 REPLACE_EXISTING StandardCopyOption。

REPLACE_EXISTING – 即使目标文件已经存在也执行复制。如果目标是符号链接,则复制链接本身(而不是链接的目标)。如果目标是非空目录,则复制失败并出现 FileAlreadyExistsException 异常。

在我引用的位的末尾,它说“如果目标是非空目录,则复制失败并出现 FileAlreadyExistsException 异常。 ”实际上我已经尝试过了,它没有给我任何异常,我试图复制一个从某个位置到桌面的非空文件夹,它成功了,但没有给我理论上我应该得到的 FileAlreadyExistsException。

有规律吗?

4

1 回答 1

2

试试这个:

创造:

C:\map1\fileA.txt
C:\map2\fileB.txt

移动:

C:\map1 to C:\map2
Files.copy(
        (new File("C:\map1")).toPath(), 
        (new File("C:\map2")).toPath(), 
        StandardCopyOption.REPLACE_EXISTING);

这导致:

C:\map1\fileA.txt
C:\map2\fileB.txt

为什么?:

“可以复制目录。但是,目录内的文件不会被复制,因此即使原始目录包含文件,新目录也是空的。”

正如您的参考资料所述。

DirectoryNotEmptyException - 指定了 REPLACE_EXISTING 选项,但文件不能被替换,因为它是一个非空目录(可选的特定异常)

FileAlreadyExistsException - 如果目标文件存在但由于未指定 REPLACE_EXISTING 选项而无法替换(可选的特定异常)

资源。

于 2013-05-02T13:54:06.100 回答