如何获取特定文件的父目录名称
如何从test.java所在的path名获得ddd
。
File file = new File("C:/aaa/bbb/ccc/ddd/test.java");
使用File
的getParentFile()
方法和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();