如何从test.java所在的路径名中获取ddd
。
File file = new File("C:/aaa/bbb/ccc/ddd/test.java");
答案 0 :(得分:124)
使用File
's getParentFile()
method和String.lastIndexOf()
检索只是直接父目录。
Mark的评论是比lastIndexOf()
更好的解决方案:
file.getParentFile().getName();
这些解决方案仅在文件具有父文件时有效(例如,通过其中一个文件构造函数创建父文件File
)。当getParentFile()
为空时,您需要使用lastIndexOf
,或使用Apache Commons' FileNameUtils.getFullPath()
之类的内容:
FilenameUtils.getFullPathNoEndSeparator(file.getAbsolutePath());
=> C:/aaa/bbb/ccc/ddd
保留/删除前缀和尾随分隔符有几种变体。您可以使用相同的FilenameUtils
类从结果中获取名称,使用lastIndexOf
等。
答案 1 :(得分:18)
File f = new File("C:/aaa/bbb/ccc/ddd/test.java");
System.out.println(f.getParentFile().getName())
f.getParentFile()
可以为null,因此您应该检查它。
答案 2 :(得分:14)
使用以下,
File file = new File("file/path");
String parentPath = file.getAbsoluteFile().getParent();
答案 3 :(得分:8)
在Java 7中,您有新的 Paths api 。现代最干净的解决方案是:
Paths.get("C:/aaa/bbb/ccc/ddd/test.java").getParent().getFileName();
结果将是:
C:/aaa/bbb/ccc/ddd
答案 4 :(得分:4)
如果您只有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));
}
答案 5 :(得分:2)
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();
答案 6 :(得分:0)
从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);
}
答案 7 :(得分:0)
在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
答案 8 :(得分:0)
//get the parentfolder name
File file = new File( System.getProperty("user.dir") + "/.");
String parentPath = file.getParentFile().getName();
答案 9 :(得分:0)
对于Kotlin:
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
}
}