Мне нужен действительный метод, чтобы проверить, String
представляет ли a путь к файлу или каталогу. Какие допустимые имена каталогов в Android? Как выяснилось, имена папок могут содержать '.'
символы, так как же система понимает, есть ли там файл или папка?
147
Ответы:
Предполагая, что
path
это вашString
.File file = new File(path); boolean exists = file.exists(); // Check if the file exists boolean isDirectory = file.isDirectory(); // Check if it's a directory boolean isFile = file.isFile(); // Check if it's a regular file
См.
File
JavadocИли вы можете использовать класс NIO
Files
и проверять такие вещи:Path file = new File(path).toPath(); boolean exists = Files.exists(file); // Check if the file exists boolean isDirectory = Files.isDirectory(file); // Check if it's a directory boolean isFile = Files.isRegularFile(file); // Check if it's a regular file
источник
path
в моем примере это расширениеString
. Почему вы не можете создатьFile
экземпляр? Обратите внимание, что это ничего не изменит в файловой системе.root
может быть файл. Файлы не обязательно имеют.something
расширение.Чистое решение, оставаясь с API nio:
источник
File
каждый раз создавать новый объект. Сохраняет памятьДля выполнения этих проверок придерживайтесь API nio.
import java.nio.file.*; static Boolean isDir(Path path) { if (path == null || !Files.exists(path)) return false; else return Files.isDirectory(path); }
источник
String path = "Your_Path"; File f = new File(path); if (f.isDirectory()){ }else if(f.isFile()){ }
источник
Система не может сказать вам,
String
представляет ли afile
илиdirectory
, если он не существует в файловой системе. Например:Path path = Paths.get("/some/path/to/dir"); System.out.println(Files.isDirectory(path)); // return false System.out.println(Files.isRegularFile(path)); // return false
И для следующего примера:
Path path = Paths.get("/some/path/to/dir/file.txt"); System.out.println(Files.isDirectory(path)); //return false System.out.println(Files.isRegularFile(path)); // return false
Итак, мы видим, что в обоих случаях система возвращает false. Это верно как для, так
java.io.File
и дляjava.nio.file.Path
источник
Чтобы проверить, представляет ли строка путь или файл программно, вы должны использовать методы API, такие как
isFile(), isDirectory().
Я предполагаю, что записи файлов и папок хранятся в структуре данных и управляются файловой системой.
источник
private static boolean isValidFolderPath(String path) { File file = new File(path); if (!file.exists()) { return file.mkdirs(); } return true; }
источник
public static boolean isDirectory(String path) { return path !=null && new File(path).isDirectory(); }
Чтобы ответить на вопрос прямо.
источник