如何获取特定文件的父目录名称

如何从test.java所在的path名获得ddd

 File file = new File("C:/aaa/bbb/ccc/ddd/test.java"); 

使用FilegetParentFile()方法和String.lastIndexOf()来检索直接的父目录。

Mark的评论是比lastIndexOf()更好的解决scheme:

 file.getParentFile().getName(); 

这些解决scheme仅在文件具有父文件(例如,通过采用父File的文件构造器之一创build)时才起作用。 当getParentFile()为null时,您需要使用lastIndexOf ,或者使用像Apache Commons的FileNameUtils.getFullPath()这样的东西:

 FilenameUtils.getFullPathNoEndSeparator(file.getAbsolutePath()); => C:/aaa/bbb/ccc/ddd 

有几种变体可以保留/删除前缀和尾随分隔符。 您可以使用相同的FilenameUtils类从结果中获取名称,使用lastIndexOf等。

我不认为有一个神奇的方法直接得到这个。 但是,这应该是罚款:

 File f = new File("C:/aaa/bbb/ccc/ddd/test.java"); String path = f.getParent(); System.out.println(path.substring(path.lastIndexOf("\\")+1,path.length())); 

f.getParent()可以为null,所以你应该检查它。

编辑:只是为了确保输出如下: C:/ aaa / bbb / ccc / ddd

在下面使用,

 File file = new File("file/path"); String parentPath = file.getAbsoluteFile().getParent(); 

如果你只是Stringpath而不想创build新的File对象,你可以使用类似于:

 public static String getParentDirPath(String fileOrDirPath) { boolean endsWithSlash = fileOrDirPath.endsWith(File.separator); return fileOrDirPath.substring(0, fileOrDirPath.lastIndexOf(File.separatorChar, endsWithSlash ? fileOrDirPath.length() - 2 : fileOrDirPath.length() - 1)); } 
 File file = new File("C:/aaa/bbb/ccc/ddd/test.java"); File curentPath = new File(file.getParent()); //get current path "C:/aaa/bbb/ccc/ddd/" String currentFolder= currentPath.getName().toString(); //get name of file to string "ddd" 

如果你需要追加文件夹“ddd”由另一个path使用;

 String currentFolder= "/" + currentPath.getName().toString();