Tôi cần một phương thức hợp lệ để kiểm tra xem String
mộ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 String
mộ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ử path
là 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 File
Javadoc
Hoặc bạn có thể sử dụng lớp NIO Files
và 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
path
trong ví dụ của tôi là String
. Tại sao bạn không thể tạo một File
ví 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.
root
có thể là một tập tin. Các tập tin không nhất thiết phải có một .something
phầ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 file
hoặ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.File
và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;
}