一、使用String.substring()方法获取文件后缀
1、获取文件名:在获取文件后缀之前,我们需要先获取文件名。Java中可以通过File类的getName()方法获取文件名。例如:
File file = new File("C:\\test\\example.txt"); String fileName = file.getName(); //example.txt
2、获取文件后缀:获取文件后缀的一种简单方法是使用String类的substring()方法,该方法可以截取字符串中的一部分。我们可以先获取文件名(例如上面的example.txt),然后找到最后一个“.”出现的位置,将其后面的字符串截取出来。例如:
String suffix = fileName.substring(fileName.lastIndexOf(".") + 1); //txt
3、这种方法在文件名中只有一个“.”的情况下是可行的,但如果文件名中有多个“.”,这种方法可能会得到错误的结果或者抛出异常。因此,我们需要考虑更加健壮的方法来获取文件后缀。
二、使用FilenameUtils.getExtension()方法获取文件后缀
1、获取文件名:同样地,我们需要先获取文件名。可以使用Apache Commons IO库中的FilenameUtils类来获取文件名。例如:
File file = new File("C:\\test\\example.txt"); String fileName = FilenameUtils.getName(file.getName()); //example.txt
2、获取文件后缀:可以使用FilenameUtils类的getExtension()方法来获取文件后缀。例如:
String suffix = FilenameUtils.getExtension(fileName); //txt
3、这种方法可以很好地处理文件名中有多个“.”的情况,而且是跨平台的,可以在不同操作系统上运行。因此,建议使用Apache Commons IO库来获取文件后缀。
三、使用MimeTypes.getExtension()方法获取文件后缀
1、获取文件后缀:有时候我们只有文件的MIME类型(例如"image/jpeg"),但是需要将其转换为文件后缀(例如".jpg")。可以使用Tika库中的MimeTypes类来实现这个功能。例如:
String mimeType = "image/jpeg"; String suffix = new MimeTypes().forName(mimeType).getExtension(); //.jpg
2、这种方法可以很好地处理MIME类型与文件后缀之间的映射关系,而且也是跨平台的,可以在不同操作系统上运行。但是需要导入Tika库,因此不如使用Apache Commons IO库简便。
四、使用Java NIO库获取文件后缀
1、获取文件后缀:Java NIO库中的Path类提供了获取文件后缀的方法。例如:
Path path = Paths.get("C:\\test\\example.txt"); String suffix = FilenameUtils.getExtension(path.getFileName().toString()); //txt
2、这种方法可以跨平台,并且不需要导入第三方库。但是需要了解Java NIO库的使用方法,稍微有些麻烦。
五、使用正则表达式获取文件后缀
1、获取文件后缀:使用正则表达式可以很好地处理文件名中有多个“.”的情况。例如:
String fileName = "example.test.txt"; String suffix = fileName.replaceAll("^.*\\.(.*)$", "$1"); //txt
2、这种方法可以处理文件名中有多个“.”的情况,并且是跨平台的。但是正则表达式的语法比较复杂,需要一定的技能。
六、小结
1、Java中有多种方法可以获取文件后缀,其中最简单的方法是使用String类的substring()方法。但是这种方法不够健壮,不适于在生产环境中使用。
2、更加健壮的方法是使用Apache Commons IO库中的FilenameUtils类来获取文件后缀。同时,Tika库中的MimeTypes类可以很好地处理MIME类型与文件后缀之间的映射关系。
3、Java NIO库也提供了获取文件后缀的方法,但是需要了解Java NIO库的使用方法,稍微有些麻烦。
4、使用正则表达式可以很好地处理文件名中有多个“.”的情况,但是需要一定的技能。