如何使用File对象获取文件的目录?

考虑下面的代码:

File file = new File("c:\\temp\\java\\testfile"); 

testfile是一个文件,它可能存在也可能不存在。 我想使用File对象获取目录c:\\temp\\java\\ 。 我怎么去做这个?

在任何情况下,我希望file.getParent() (或file.getParentFile() )给你你想要的。

另外,如果你想知道原始File 是否存在并且一个目录,那么exists()isDirectory()就是你所要做的。

Java文档中的File.getParent()

File API File.getParent或File.getParentFile应该返回你的文件目录。

你的代码应该是这样的:

  File file = new File("c:\\temp\\java\\testfile"); if(!file.exists()){ file = file.getParentFile(); } 

您还可以使用File.isDirectory API检查您的父文件是否是目录

 if(file.isDirectory()){ System.out.println("file is directory "); } 
 File directory = new File("Enter any directory name or file name"); boolean isDirectory = directory.isDirectory(); if (isDirectory) { // It returns true if directory is a directory. System.out.println("the name you have entered is a directory : " + directory); //It returns the absolutepath of a directory. System.out.println("the path is " + directory.getAbsolutePath()); } else { // It returns false if directory is a file. System.out.println("the name you have entered is a file : " + directory); //It returns the absolute path of a file. System.out.println("the path is " + file.getParent()); } 
 File filePath=new File("your_file_path"); String dir=""; if (filePath.isDirectory()) { dir=filePath.getAbsolutePath(); } else { dir=filePath.getAbsolutePath().replaceAll(filePath.getName(), ""); } 

如果你做这样的事情:

 File file = new File("test.txt"); String parent = file.getParent(); 

parent将为空。

所以要得到这个文件的目录,你可以做下一步:

 parent = file.getAbsoluteFile().getParent(); 

你可以使用这个

  File dir=new File(TestMain.class.getClassLoader().getResource("filename").getPath()); 
 String parentPath = f.getPath().substring(0, f.getPath().length() - f.getName().length()); 

这将是我的解决scheme

我发现这对获取绝对文件位置更有用。

 File file = new File("\\TestHello\\test.txt"); System.out.println(file.getAbsoluteFile());