如何从test.java所在的路径名获取 ddd 。 File file = new File("C:/aaa/bbb/ccc/ddd/test.java"); 原文由 minil 发布,翻译遵循 CC BY-SA 4.0 许可协议
使用 File 的 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 等。 原文由 Dave Newton 发布,翻译遵循 CC BY-SA 3.0 许可协议
从 Java 7 开始,你有了新的 Paths api 。现代和最干净的解决方案是: Paths.get("C:/aaa/bbb/ccc/ddd/test.java").getParent().toString(); 结果将是: C:/aaa/bbb/ccc/ddd 原文由 neves 发布,翻译遵循 CC BY-SA 4.0 许可协议
使用
File
的getParentFile()
方法 和String.lastIndexOf()
仅 检索直接父目录。马克的评论是比
lastIndexOf()
更好的解决方案:这些解决方案仅在文件具有父文件时才有效(例如,通过采用父文件的文件构造函数之一创建
File
)。当getParentFile()
为空时,您需要求助于使用lastIndexOf
,或使用类似 Apache Commons 的FileNameUtils.getFullPath()
:有几种变体可以保留/删除前缀和尾随分隔符。您可以使用相同的
FilenameUtils
类从结果中获取名称,使用lastIndexOf
等。