164

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

4

8 回答 8

236

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

请参阅FileJavadoc


或者您可以使用 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
于 2012-10-08T11:07:14.527 回答
57

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

Files.isDirectory(path)
Files.isRegularFile(path)
于 2015-12-16T12:51:30.343 回答
21

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

import java.nio.file.*;

static Boolean isDir(Path path) {
  if (path == null || !Files.exists(path)) return false;
  else return Files.isDirectory(path);
}
于 2015-01-14T21:10:59.910 回答
7

系统无法告诉您 a 是否String代表 afiledirectory,如果它在文件系统中不存在。例如:

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

于 2017-09-25T10:10:12.427 回答
4
String path = "Your_Path";
File f = new File(path);

if (f.isDirectory()){



  }else if(f.isFile()){



  }
于 2012-10-08T11:11:35.047 回答
2

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

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

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

于 2012-10-08T11:09:58.387 回答
1
public static boolean isDirectory(String path) {
    return path !=null && new File(path).isDirectory();
}

直接回答问题。

于 2019-02-06T14:26:19.983 回答
0
   private static boolean isValidFolderPath(String path) {
    File file = new File(path);
    if (!file.exists()) {
      return file.mkdirs();
    }
    return true;
  }
于 2018-05-17T14:35:46.643 回答