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


110

考虑代码:

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

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

Answers:


170

无论哪种情况,我都希望file.getParent()(或file.getParentFile())给您您想要的。

另外,如果您要查找原始目录是否File 确实存在并且目录,那么您将要查找exists()and isDirectory()


9
请谨慎使用file.getParent(),因为在某些情况下它可能返回null。
geschema 2014年

@geschema Ponaguynik在下面的回答解决了这个问题
4myle


14

如果您执行以下操作:

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

parent 将为空。

因此,要获取此文件的目录,可以执行以下操作:

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

8

文件API File.getParentFile.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 ");
}

4
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());
}

1
您没有回答问题,这不适用于文件。
toni07年

code最终文件file = new File(“ C:/dev/changeofseasons.mid”); System.out.println(“文件存在吗?” + file.exists()); System.out.println(“文件目录:” + file.getAbsolutePath()); 好的,对不起,我缩进了缩进,我认为无法在注释中设置代码格式。仍然,您的代码显然无法正常工作。
toni07年

谢谢,固定<!--->
Jigar Joshi 2015年

3
File filePath=new File("your_file_path");
String dir="";
if (filePath.isDirectory())
{
    dir=filePath.getAbsolutePath();
}
else
{
    dir=filePath.getAbsolutePath().replaceAll(filePath.getName(), "");
}

需要描述。
Halvor Holsten Strand'3

1
欢迎使用Stack Overflow!通常,代码答案需要一些解释-请参阅此meta Stackoverflow帖子。使用您已发布的答案,您可能需要解释一下您要给出的一般情况以及它与OP的实际帖子之间的关系。更严重的是-您可能要考虑它的工作方式your_file_path = "C:\\testfiles\\temp\\testfile";-我认为它不会如您所愿。
J理查德·斯内普

应该是正确的答案。这将显示文件的完整路径。
Magno C

0

你可以用这个

 File dir=new File(TestMain.class.getClassLoader().getResource("filename").getPath());

0
String parentPath = f.getPath().substring(0, f.getPath().length() - f.getName().length()); 

这是我的解决方案


-1

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

File file = new File("\\TestHello\\test.txt");
System.out.println(file.getAbsoluteFile());
By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.