Мені потрібен правильний метод, щоб перевірити, чи 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
Дивіться FileJavadoc
Або ви можете використовувати клас 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;
}