目录
Java截取文件后缀名的方法
以下方法都是笔者用过以及踩过坑的,欢迎补充
一 . String 类
这个是测试的字符串:
String data = “测试文件.doc.exe”;
System.out.println("方法1 结果: "+ data.substring(data.lastIndexOf(".")));
System.out.println("方法2 结果: "+ data.split("\\.")[data.split("\\.").length-1]);
tips: 有时有可能接收到不规范的文件名,比如:
String data=“测试文件”;
此时,方法1就不适用了会报错 java.lang.StringIndexOutOfBoundsException: String index out of range: -1
System.out.println("方法1改进 结果: "+ data.substring(data.lastIndexOf(".")+1));
二 . 工具类
cn.hutool.core.io.file.FileNameUtil
使用这个需要引入依赖,笔者因为还用到了其他的方法所以引入了所有的
<dependency>
<groupId>cn.hutool</groupId>
<artifactId>hutool-all</artifactId>
<version>5.4.3</version>
</dependency>
示例
System.out.println("方法3-1 结果: "+ FileNameUtil.getSuffix(data));
System.out.println("方法3-2 结果: "+ FileNameUtil.extName(data));
hutool工具类非常丰富
上方面还可以接收 File 参数
System.out.println("方法3-3 结果: "+ FileNameUtil.getSuffix(new File(data)));
System.out.println("方法3-4 结果: "+ FileNameUtil.extName(new File(data)));
结果和上面一样
org.apache.commons.io.FilenameUtils
这个需要使用 apache的依赖
<dependency>
<groupId>commons-io</groupId>
<artifactId>commons-io</artifactId>
<version>2.4</version>
</dependency>
示例
System.out.println("方法4 结果: "+ FilenameUtils.getExtension(data));
org.springframework.util.StringUtils
System.out.println("方法5 结果: "+ StringUtils.getFilenameExtension(data));
三 . 正则表达式
正则一般需要根据自己的业务来设计