Tôi cần một phương thức hợp lệ để kiểm tra xem Stringmột đường dẫn cho tệp hoặc thư mục. Tên thư mục hợp lệ trong Android là gì? Khi xuất hiện, tên thư mục có thể chứa '.'ký tự, vậy làm thế nào để hệ thống hiểu liệu có tệp hoặc thư mục không?
Tôi cần một phương thức hợp lệ để kiểm tra xem Stringmột đường dẫn cho tệp hoặc thư mục. Tên thư mục hợp lệ trong Android là gì? Khi xuất hiện, tên thư mục có thể chứa '.'ký tự, vậy làm thế nào để hệ thống hiểu liệu có tệp hoặc thư mục không?
Câu trả lời:
Giả sử pathlà của bạn 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
Xem FileJavadoc
Hoặc bạn có thể sử dụng lớp NIO Filesvà kiểm tra những thứ như thế này:
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
pathtrong ví dụ của tôi là String. Tại sao bạn không thể tạo một Fileví dụ? Lưu ý rằng điều này sẽ không thay đổi bất cứ điều gì trên hệ thống tập tin.
rootcó thể là một tập tin. Các tập tin không nhất thiết phải có một .somethingphần mở rộng.
Làm sạch giải pháp trong khi vẫn sử dụng API nio:
Files.isDirectory(path)
Files.isRegularFile(path)
Fileđối tượng mới mỗi lần. Lưu bộ nhớ
Vui lòng bám vào API nio để thực hiện các kiểm tra này
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()){
}
Không có cách nào để hệ thống cho bạn biết nếu Stringđại diện cho một filehoặc directory, nếu nó không tồn tại trong hệ thống tệp. Ví dụ:
Path path = Paths.get("/some/path/to/dir");
System.out.println(Files.isDirectory(path)); // return false
System.out.println(Files.isRegularFile(path)); // return false
Và cho ví dụ sau:
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
Vì vậy, chúng tôi thấy rằng trong cả hai trường hợp hệ thống trả về sai. Điều này đúng cho cả hai java.io.Filevàjava.nio.file.Path
Để kiểm tra xem một chuỗi đại diện cho một đường dẫn hoặc một tệp theo chương trình, bạn nên sử dụng các phương thức API như isFile(), isDirectory().
Làm thế nào để hệ thống hiểu liệu có một tập tin hoặc một thư mục?
Tôi đoán, các mục nhập tệp và thư mục được giữ trong một cấu trúc dữ liệu và nó được quản lý bởi hệ thống tệp.
private static boolean isValidFolderPath(String path) {
File file = new File(path);
if (!file.exists()) {
return file.mkdirs();
}
return true;
}