复制两个空路径时会发生什么,为什么不抛出异常?

soc*_*soc 0 java filesystems copy file path

我真的很想知道这段代码是做什么的:

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

scala> Files.copy(Paths.get(""), Paths.get(""))
res0: java.nio.file.Path = 
Run Code Online (Sandbox Code Playgroud)

不应该抛出一个NoSuchFileException

阅读JavaDoc揭示:

默认情况下,如果目标文件已存在或者是符号链接,则复制将失败,除非源和目标是同一文件,在这种情况下,方法完成而不复制文件.

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

Chr*_*ris 5

您可能需要查看http://download.oracle.com/javase/7/docs/api/java/nio/file/Paths.html,了解当提供空字符串时它会执行什么路径(它生成一个空路径)和http://download.oracle.com/javase/7/docs/api/java/nio/file/Path.html有关空路径的含义的详细信息:

如果Path仅包含一个为空的名称元素,则将其视为空路径.使用空路径访问文件等同于访问文件系统的默认目录.

因此,您的代码看起来像是一个有效的空路径,然后认为源和目标是相同的.