Как проверить, указывает ли путь к существующему файлу с помощью нового Файлового API Java 7? - PullRequest
32 голосов
/ 22 мая 2011

В старом, более или менее устаревшем java.io.File API был метод exists, который возвращал значение true, если File указывал на существующий в файловой системе, но я не смог найти сопоставимый метод для java.nio.file.Path:

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

scala> val path = Paths.get("/foo")
path: java.nio.file.Path = /foo

scala> path.
asInstanceOf     compareTo        endsWith         getFileName      getFileSystem    getName          getNameCount     
getParent        getRoot          isAbsolute       isInstanceOf     iterator         normalize        register         
relativize       resolve          resolveSibling   startsWith       subpath          toAbsolutePath   toFile           
toRealPath       toString         toUri  

Конечно, я мог бы просто преобразовать path обратно в File, но я думаю, что есть лучший способ сделать это.

Редактировать: ОК, спасибокаждому, указывающему Files.exists.Кто-нибудь знает, почему это стало сложнее (чем использование простого exists метода на Path)?

Ответы [ 4 ]

56 голосов
/ 22 мая 2011

Используйте класс Files:

Files.exists(path);

РЕДАКТИРОВАТЬ: чтобы ответить на ваш следующий вопрос, я думаю, причина в том, что метод в другом классе заключается в том, что Pathинтерфейс, и они хотели предоставить реализацию (аналогично помещению методов сортировки в класс Collections вместо интерфейса List).

Не имеет прямого отношения к вопросу, но, как говорится в отчететакже является необязательным аргументом varags для метода, который определяет, как обрабатываются символические ссылки

Читайте Javadocs из Oracle здесь .

9 голосов
/ 22 мая 2011

посмотрите в утилите класса Файлы для пакета:

Files.exists(Path path,LinkOption... options)
2 голосов
/ 24 мая 2011

В новом API файловой системы все файловые операции определяются классом Files.В основном эти операции реализуются в терминах других операций или делегируются соответствующему поставщику файловой системы.С другой стороны, интерфейс Path - это место, где определены операции пути.Путь - это просто объект, который используется для поиска файла.Если вы хотите выполнить операции с файлом, тогда вы вызываете соответствующий метод Files, указывая путь для поиска файла.

0 голосов
/ 22 мая 2011

Нет необходимости добавлять новый метод для этого: используйте Path.toFile(), чтобы получить файл, затем запустите exists для этого.

...