Подтвердить что ты не робот

Как проверить, указывает ли путь к существующему файлу с новым API-интерфейсом Java 7?

У старого, более или менее устаревшего API java.io.File был метод 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)?

4b9b3361

Ответ 1

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

Files.exists(path);

EDIT: чтобы ответить на ваш следующий вопрос, я думаю, что причина, по которой метод находится в другом классе, заключается в том, что Path является интерфейсом, и они хотели предоставить реализацию (аналогично методам сортировки в классе Collections вместо интерфейса List).

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

Прочитайте Javadocs от Oracle здесь.

Ответ 2

загляните в класс утилиты Files для пакета:

Files.exists(Path path,LinkOption... options)

Ответ 3

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

Ответ 4

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