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

时间:2010-09-07 08:50:14

标签: java file

考虑代码:

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

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

10 个答案:

答案 0 :(得分:150)

在任何一种情况下,我都希望file.getParent()(或file.getParentFile())能够为您提供所需内容。

此外,如果您想知道原始File 是否存在目录,那么exists()和{{1你正在追求的是什么。

答案 1 :(得分:24)

来自Java文档的

File.getParent()

答案 2 :(得分: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 ");
}

答案 3 :(得分:7)

如果您这样做:

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

parent将为null。

因此,要获取此文件的目录,您可以执行下一步:

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

答案 4 :(得分: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());
}

答案 5 :(得分:3)

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

答案 6 :(得分:0)

您可以使用此

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

答案 7 :(得分:0)

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

这将是我的解决方案

答案 8 :(得分:0)

6/10/2021 如果例如,所有当前答案都失败了。给定的文件是...

new File("." + File.separator + "."); //Odd, yes, but I've seen similar more often than you'd think is possible

要获得简单、可靠的解决方案,请尝试...

File givenFile = new File("." + File.separator + ".." + File.separator + "." + File.separator + "fakeFilename"); //The file or dir we want the parent of, whether it exists or not
File parentFile = new File(givenFile.getAbsolutePath() + File.separator + "..");
System.out.println(parentFile.getAbsolutePath());

请注意,此答案假定您需要文件系统上的实际父目录,而不是表示给定 File 对象的父节点的 File 对象(可能是null,或者可能与给定文件在同一目录)。

编辑:另请注意,内部文件名并不简洁,在某些情况下可能会随着重复使用而增长。没有该问题的等效解决方案需要解析上述解决方案给出的整个绝对文件名,并调整输出,删除“.”的所有实例。和“..”(后者的ofc还需要删除它之前的节点,但只有在删除所有“.”之后)

答案 9 :(得分:-1)

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

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