我需要一个有效的方法来检查 String是否表示文件或目录的路径。在 Android 中什么是有效的目录名称?文件夹名称可以包含 '.'字符,那么系统如何理解文件还是文件夹呢?
String
'.'
假设 path是你的 String。
path
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检查以下内容:
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 方法
isFile(), isDirectory().
系统如何理解是否存在文件或文件夹?
我猜想,文件和文件夹条目保存在一个数据结构中,由文件系统管理。
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,以及它在文件系统中是否是 根本不存在。例如:
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.File和 java.nio.file.Path都是如此
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; }
public static boolean isDirectory(String path) { return path !=null && new File(path).isDirectory(); }
直接回答问题。