检查路径是否表示文件或文件夹

我需要一个有效的方法来检查 String是否表示文件或目录的路径。在 Android 中什么是有效的目录名称?文件夹名称可以包含 '.'字符,那么系统如何理解文件还是文件夹呢?

184982 次浏览

假设 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

贾瓦多克


或者您可以使用 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

若要检查字符串是否以编程方式表示路径或文件,应使用诸如 isFile(), isDirectory().之类的 API 方法

系统如何理解是否存在文件或文件夹?

我猜想,文件和文件夹条目保存在一个数据结构中,由文件系统管理。

String path = "Your_Path";
File f = new File(path);


if (f.isDirectory()){






}else if(f.isFile()){






}

请使用 nio API 执行这些检查

import java.nio.file.*;


static Boolean isDir(Path path) {
if (path == null || !Files.exists(path)) return false;
else return Files.isDirectory(path);
}

使用 nio API 时的清洁解决方案:

Files.isDirectory(path)
Files.isRegularFile(path)

系统无法告诉您 String是代表 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

所以我们看到在这两种情况下系统都返回 false,对于 java.io.Filejava.nio.file.Path都是如此

   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();
}

直接回答问题。