Java中Path对象提供getFileName()获取文件名(如report.txt)、getParent()获取父目录(如/a/b),不带后缀名需结合toString()和lastIndexOf('.')截取,扩展名同理提取子串;末尾斜杠不影响结果,根路径或无父级时返回null。

Java 中可以通过 Path 对象的内置方法直接提取文件名、父目录等路径组件,无需手动字符串切割,安全且跨平台。
获取文件名(不含路径)
使用 getFileName() 方法,返回的是一个 Path 对象,代表最后一级的名称(可能是文件名,也可能是子目录名)。
- 对
/home/user/doc/report.txt→ 返回report.txt - 对
/home/user/project/→ 返回project(注意:末尾斜杠不影响结果) - 若路径以
/或\结尾且无实际名称(如/home/),则返回null
获取父目录路径
调用 getParent(),返回上一级目录的 Path 对象;如果已是根路径(如 / 或 C:)或没有父级,则返回 null。
-
Paths.get("/a/b/c.txt").getParent()→/a/b -
Paths.get("data/log.log").getParent()→data -
Paths.get("README.md").getParent()→null(当前路径下无父级)
获取不带后缀的文件名(文件主名)
Path 本身不提供直接去后缀的方法,需结合 getFileName().toString() 和字符串处理:
当用户要求为 Java 代码添加注释、修改注释、审查注释、整理注释格式,或要求按照代码注释规范处理 Java 文件时,使用本技能。本技能用于统一生成和维护 Java 类注释模板、按 Git 对比 release 判断版本号、补充每行代码上方中文块注释、调整注释空行规则,并保持 Java 文件 UTF-8 无 BOM 编码。典型触发场景包括:补充类注释、更新 @version、检查 @author 来源、整理行尾注释、把注释放到代码上一行、检查注释是否符合规范、构建前检查 Java 注释风格。
立即学习“Java免费学习笔记(深入)”;
- 先用
getFileName()拿到完整文件名(如config.properties) - 再用
lastIndexOf('.') > 0判断是否存在有效扩展名 - 推荐用
String.substring(0, index)截取,注意避免.在开头(如.gitignore)
示例代码片段:
Path path = Paths.get("src/main/java/App.java");String name = path.getFileName().toString();
int dotIndex = name.lastIndexOf('.');
String stem = (dotIndex > 0) ? name.substring(0, dotIndex) : name;
获取文件扩展名(后缀)
同样基于 getFileName() 的字符串形式提取:
- 取
lastIndexOf('.') + 1开始到末尾的子串 - 若无
.或.在开头(隐藏文件),建议返回空字符串而非null - 例如:
image.jpg→jpg,.env→env,README→""

















