Что происходит, когда я копирую два пустых пути и почему это не вызывает исключение? - PullRequest
0 голосов
/ 26 июля 2011

Мне действительно интересно, что делает этот код:

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 Ответ

5 голосов
/ 26 июля 2011

Возможно, вы захотите проверить 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, чтобы узнать, что означает пустой путь:

Путь считается пустым путем, если он состоит только из одного пустого элемента имени.Доступ к файлу с использованием пустого пути эквивалентен доступу к каталогу файловой системы по умолчанию.

Таким образом, похоже, что ваш код получает пустой путь, который является допустимым, а затем считает источник и назначениебыть таким же.

...