Мені потрібен правильний метод, щоб перевірити, чи String
представляє собою шлях до файлу чи каталогу. Які дійсні імена каталогів в Android? Як виходить, імена папок можуть містити '.'
символи, то як система розуміє, чи є файл чи папка?
Мені потрібен правильний метод, щоб перевірити, чи String
представляє собою шлях до файлу чи каталогу. Які дійсні імена каталогів в Android? Як виходить, імена папок можуть містити '.'
символи, то як система розуміє, чи є файл чи папка?
Відповіді:
Припустимо, 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:
Files.isDirectory(path)
Files.isRegularFile(path)
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
представляє a file
або 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
Отже, ми бачимо, що в обох випадках система повернення помилковою. Це справедливо і для, java.io.File
і дляjava.nio.file.Path
private static boolean isValidFolderPath(String path) {
File file = new File(path);
if (!file.exists()) {
return file.mkdirs();
}
return true;
}