如何从test.java所在的路径名获取ddd
。
File file = new File("C:/aaa/bbb/ccc/ddd/test.java");
使用File
's getParentFile()
method和String.lastIndexOf()
只检索直接的父目录。
Mark的评论是比lastIndexOf()
更好的解决方案:
file.getParentFile().getName();
这些解决方案仅在文件具有父文件时才有效(例如,通过其中一个文件构造函数创建父文件File
)。当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");
System.out.println(f.getParentFile().getName())
f.getParentFile()
可以为null,所以你应该检查一下。
使用下面,
File file = new File("file/path");
String parentPath = file.getAbsoluteFile().getParent();
在Java 7中,您有了新的Paths api。现代最干净的解决方案是:
Paths.get("C:/aaa/bbb/ccc/ddd/test.java").getParent().getFileName();
结果将是:
C:/aaa/bbb/ccc/ddd
如果您只有String路径并且不想创建新的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”;
String currentFolder= "/" + currentPath.getName().toString();
从java 7我更喜欢使用Path。你只需要把路径放入:
Path dddDirectoryPath = Paths.get("C:/aaa/bbb/ccc/ddd/test.java");
并创建一些get方法:
public String getLastDirectoryName(Path directoryPath) {
int nameCount = directoryPath.getNameCount();
return directoryPath.getName(nameCount - 1);
}
在Groovy中:
没有必要创建一个File
实例来解析groovy中的字符串。它可以如下完成:
String path = "C:/aaa/bbb/ccc/ddd/test.java"
path.split('/')[-2] // this will return ddd
拆分将创建数组[C:, aaa, bbb, ccc, ddd, test.java]
和索引-2
将指向最后一个之前的条目,在这种情况下是ddd
//get the parentfolder name
File file = new File( System.getProperty("user.dir") + "/.");
String parentPath = file.getParentFile().getName();