怎么利用 String.substring() 从完整的文件路径字符串中截取出文件的后缀名
在Ja va中,利用String.substring()截取文件后缀是一个常见操作。核心流程是:先用lastIndexOf(".")定位最后一个点号的位置,然后判断该位置是否合法——必须大于0且小于字符串长度减1,最后调用substring(dotIndex + 1)提取后缀。对于没有点、点在末尾这
在Ja va中,利用String.substring()截取文件后缀是一个常见操作。核心流程是:先用lastIndexOf(".")定位最后一个点号的位置,然后判断该位置是否合法——必须大于0且小于字符串长度减1,最后调用substring(dotIndex + 1)提取后缀。对于没有点、点在末尾这类边界情况,需返回空字符串。

直接用String.substring()截取文件后缀名,关键在于准确定位最后一个点(.)的位置。后缀名就是最后一个点之后的部分,不包含点本身。下面一步步拆解具体做法。
找到最后一个点的索引
使用lastIndexOf(".")方法,可以获取最后一个点在字符串中的索引。需要注意:如果文件名本身没有点(比如README),或者以点开头(比如.gitignore),就要额外做判断,避免返回 -1 或者截取出错。
检查是否有效存在后缀
如果lastIndexOf(".")的结果等于 -1,说明没有点,自然也就没有标准后缀;如果点在末尾(比如name.),那后缀就为空。另外,还需要排除点在路径分隔符之后、但实际属于目录名的情况(比如/path.to/file.txt中的path.to是目录名,不是后缀)。当然,如果只是处理纯文件名字符串,关注最后一个点就足够了。
调用substring截取
当确定最后一个点的索引为dotIndex,并且满足dotIndex > 0且dotIndex < str.length() - 1时,用substring(dotIndex + 1)就能获取到后缀。看几个例子就清楚了:
"a/b/c.txt".substring("a/b/c.txt".lastIndexOf(".") + 1)→"txt""archive.tar.gz".substring("archive.tar.gz".lastIndexOf(".") + 1)→"gz"(只取最后一段)- 如果想取完整扩展名(比如
"tar.gz"),需要更复杂的逻辑,单纯substring不支持多级后缀的自动识别。
简单安全的写法示例
可以封装成一行带保护的表达式,这样能优雅地避开无点、结尾为点等边界问题:
String ext = fileName.lastIndexOf(".") > 0 && fileName.lastIndexOf(".") < fileName.length() - 1 ? fileName.substring(fileName.lastIndexOf(".") + 1) : "";
这个写法把判断和截取合并在一起,既简洁又安全,推荐在实战中直接使用。
Photoshop 2026 是 Adobe 推出的专业图像处理与视觉设计软件,支持 Windows、macOS 和 iPad 等平台,广泛应用于摄影修图、电商设计、平面海报、数字绘画及视觉合成等创作场景。
Blender 是一款免费开源、跨平台的专业 3D 创作软件,集建模、动画、渲染、视频编辑与视觉合成等功能于一体,广泛应用于影视动画、游戏设计和建筑可视化等领域。软件支持 Cycles 物理渲染器与 Eevee 实时渲染引擎,并提供多边形建模、骨骼绑定、物理模拟等专业工具。Blender 兼容 Windows、macOS 和 Linux 系统,安装包轻巧、运行流畅,依托活跃的全球开发者社区持续更新,是从初学者到专业创作者都值得选择的正版 3D 创作工具。
Photoshop 2026 是 Adobe 推出的专业图像处理与视觉设计软件,支持 Windows、macOS 和 iPad 等平台,广泛应用于摄影修图、电商设计、平面海报、数字绘画及视觉合成等创作场景。
Blender 是一款免费开源、跨平台的专业 3D 创作软件,集建模、动画、渲染、视频编辑与视觉合成等功能于一体,广泛应用于影视动画、游戏设计和建筑可视化等领域。软件支持 Cycles 物理渲染器与 Eevee 实时渲染引擎,并提供多边形建模、骨骼绑定、物理模拟等专业工具。Blender 兼容 Windows、macOS 和 Linux 系统,安装包轻巧、运行流畅,依托活跃的全球开发者社区持续更新,是从初学者到专业创作者都值得选择的正版 3D 创作工具。















