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

如何从 test.java 所在的路径名获取 ddd

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

使用 ABC0的 getParentFile()方法String.lastIndexOf()检索 只是直接的父目录。

马克的评论是一个比 lastIndexOf()更好的解决方案:

file.getParentFile().getName();

这些解决方案只有在文件有父文件的情况下才有效(例如,通过采用父 File的文件构造函数之一创建)。当 getParentFile()为空时,你需要使用 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()可以为空,所以您应该检查它。

使用以下,

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

如果你只有字符串路径,不想创建新的文件对象,你可以使用这样的东西:

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 放入:

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

从 Java7开始,你就有了新的 一个 href = “ https://docs.oracle.com/javase/8/docs/api/java/nio/file/Paths.html”rel = “ nofollow noReferrer”> Path api 。最现代、最干净的解决方案是:

Paths.get("C:/aaa/bbb/ccc/ddd/test.java").getParent().toString();

结果将是:

C:/aaa/bbb/ccc/ddd

在 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();

对科特林来说:

 fun getFolderName() {
            

val uri: Uri
val cursor: Cursor?
    

uri = MediaStore.Audio.Media.EXTERNAL_CONTENT_URI
val projection = arrayOf(MediaStore.Audio.AudioColumns.DATA)
cursor = requireActivity().contentResolver.query(uri, projection, null, null, null)
if (cursor != null) {
column_index_data = cursor.getColumnIndexOrThrow(MediaStore.Audio.AudioColumns.DATA)
}
            

while (cursor!!.moveToNext()) {
    

absolutePathOfImage = cursor.getString(column_index_data)
    

    

val fileName: String = File(absolutePathOfImage).parentFile.name
}
}