2011-07-26 129 views
0

我真的不知道该代码的功能:当我复制两个空路径时会发生什么,为什么它不会抛出异常?

scala> import java.nio.file._ 
import java.nio.file._ 

scala> Files.copy(Paths.get(""), Paths.get("")) 
res0: java.nio.file.Path = 

难道不应该抛出NoSuchFileException

JavaDoc显示:

默认情况下,如果目标文件已经存在,或者是 符号链接,但如果源和目标是相同的文件,在 复制失败这种情况下,方法完成而不复制文件。

但我不确定这是真正的原因,因为Files.copy(Paths.get("a"), Paths.get("a"))按预期失败。

+1

这个问题不是斯卡拉特有的。我只是用它来显示代码和交互。 – soc

回答

5

你可能要检查http://download.oracle.com/javase/7/docs/api/java/nio/file/Paths.html什么paths.get什么空路径是指当没有提供细节一个空字符串(它会产生一个空的路径)和http://download.oracle.com/javase/7/docs/api/java/nio/file/Path.html

的路径被认为是如果它仅包含一个空的名称元素 ,则为空路径。使用空路径访问文件是 等效于访问文件系统的默认目录。

所以它看起来像你的代码得到一个空的路径是有效的,然后认为源和目标是相同的。

+0

当它复制一个目录时,它创建一个空目录,就像文档链接提及。所以,实际上,它会在'dest'中创建一个空目录。 – woliveirajr

+0

不幸的是,我并不是一位出色的java专家。只是阅读文档,如果它比较两个副本参数以查看它们是否完全相同,然后执行任何类似于查看文件系统的更多开销,则我不会感到惊讶。我只是会想,如果它在'dest'中创建了一个空目录,它会返回到那个路径并且那个路径不会是空的。 – Chris

相关问题