如何知道一个文件代表的是根目录还是我的电脑?

Jav*_*cal 1 java java-io java.nio.file

我有一个java.io.File对象,但我不知道它对应于哪个对象。使用该isDirectory()方法我们可以检查它是否是一个目录。普通文件夹和驱动器在调用时都会返回 trueisDirectory()

我如何检查对象File是驱动器还是我的电脑?

Jav*_*cal 7

有两种方法,一种是

File f=new File("C:\\");
if(f.toPath().getNameCount()==0) System.out.println(f+" is root");
Run Code Online (Sandbox Code Playgroud)

getNameCount()方法返回编号。给定的根File

toPath()方法返回java.nio.file.Path的对象f。还有一件事,您甚至不需要java.nio.file在这里导入包。

例如,如果f=new File("C:\\Program Files");then 则返回 1,因为只有一个根是C:\\

驱动器的名称计数为 0

我的电脑无法表示为 File 对象。如果你尝试去做,

File f=new File("C:\\").getParentFile();你得到null

另一种方法是(我不推荐)。这里我们必须使用循环,从性能角度来看,它会降低性能,同时,这也很长。

File[] files=File.listRoots();
for(int i=0;i<files.length;i++)
{
  if(files[i].equals(f)){
  System.out.println(f+" is root");
  break;
  }
}
Run Code Online (Sandbox Code Playgroud)