检查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
表示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
都是如此