检查path是否代表文件或文件夹

我需要一个有效的方法来检查一个String代表文件或目录的path。 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 

请参阅File Javadoc


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

干净的解决scheme,同时使用nio API:

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

请坚持使用nio API来执行这些检查

 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是否以编程方式表示path或文件,应使用isFile(), isDirectory().等API方法isFile(), isDirectory().

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

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

如果String表示filedirectory (如果它不存在于文件系统中),则系统无法告诉您。 例如:

 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都是如此