Java获取MultipartFile文件后缀名的多种方法

 更新时间:2025年06月27日 09:18:17   作者:墨瑾轩  
Java处理MultipartFile获取后缀名的方法包括字符串操作、正则、Apache CommonsIO、Spring StringUtils等,建议根据项目依赖和需求选择合适方式,本文通过代码示例介绍的非常详细,需要的朋友可以参考下

在Java中,处理MultipartFile对象时,获取文件后缀名是一个常见的需求。以下是几种常用的方法:

使用lastIndexOf和substring方法:

public static String getExtension(MultipartFile file) {
    if (file == null) {
        return "";
    }
    String originalFilename = file.getOriginalFilename();
    if (originalFilename == null || originalFilename.isEmpty()) {
        return "";
    }
    int dotIndex = originalFilename.lastIndexOf('.');
    if (dotIndex == -1 || dotIndex == originalFilename.length() - 1) {
        return "";
    }
    return originalFilename.substring(dotIndex + 1).toLowerCase();
}

使用split方法:

public static String getExtension(MultipartFile file) {
    if (file == null) {
        return "";
    }
    String originalFilename = file.getOriginalFilename();
    if (originalFilename == null) {
        return "";
    }
    String[] parts = originalFilename.split("\\.");
    return parts.length > 1 ? parts[parts.length - 1].toLowerCase() : "";
}

使用正则表达式:

public static String getExtension(MultipartFile file) {
    if (file == null) {
        return "";
    }
    String originalFilename = file.getOriginalFilename();
    if (originalFilename == null) {
        return "";
    }
    Pattern pattern = Pattern.compile("\\.(\\w+)$");
    Matcher matcher = pattern.matcher(originalFilename);
    return matcher.find() ? matcher.group(1).toLowerCase() : "";
}

使用Apache Commons IO的FilenameUtils类:

import org.apache.commons.io.FilenameUtils;

public static String getExtension(MultipartFile file) {
    if (file == null) {
        return "";
    }
    String originalFilename = file.getOriginalFilename();
    return FilenameUtils.getExtension(originalFilename).toLowerCase();
}

使用Spring框架的StringUtils类:

import org.springframework.util.StringUtils;

public static String getExtension(MultipartFile file) {
    if (file == null) {
        return "";
    }
    String originalFilename = file.getOriginalFilename();
    return StringUtils.getFilenameExtension(originalFilename);
}

使用File类:

import java.io.File;

public static String getExtension(MultipartFile file) {
    if (file == null) {
        return "";
    }
    String originalFilename = file.getOriginalFilename();
    if (originalFilename == null) {
        return "";
    }
    File tempFile = new File(originalFilename);
    String name = tempFile.getName();
    int dotIndex = name.lastIndexOf('.');
    return (dotIndex > 0 && dotIndex < name.length() - 1) 
        ? name.substring(dotIndex + 1).toLowerCase() 
        : "";
}

使用Java NIO的Paths类:

import java.nio.file.Path;
import java.nio.file.Paths;

public static String getExtension(MultipartFile file) {
    if (file == null) {
        return "";
    }
    String originalFilename = file.getOriginalFilename();
    if (originalFilename == null) {
        return "";
    }
    Path path = Paths.get(originalFilename);
    String name = path.getFileName().toString();
    return name.substring(name.lastIndexOf('.') + 1).toLowerCase();
}

这些方法各有优缺点,可以根据具体需求和项目环境选择合适的方法。例如,如果项目已经使用了Spring框架,那么使用StringUtils类会更为方便;如果希望避免额外的依赖,那么lastIndexOfsubstring方法或split方法则是不错的选择。

以上就是Java获取MultipartFile文件后缀名的多种方法的详细内容,更多关于Java获取MultipartFile后缀名的资料请关注脚本之家其它相关文章!

相关文章

  • springboot使用kafka的过程

    springboot使用kafka的过程

    本文介绍了Spring Boot集成Kafka的步骤,包括启动服务、配置生产者与消费者,以及Kafka从依赖Zookeeper到Kraft模式的版本演进,本文结合实例代码给大家介绍的非常详细,需要的朋友参考下吧
    2025-06-06
  • Spring boot 集成 MQTT详情

    Spring boot 集成 MQTT详情

    这篇文章主要介绍了Spring boot 集成 MQTT详情,MQTT是一种基于发布/订阅模式的"轻量级"通讯协议,可以以极少的代码和有限的带宽为连接远程设备提供实时可靠的消息服,下文更多相关介绍,需要的小伙伴可以参考一下
    2022-04-04
  • java基于servlet编写上传下载功能 类似文件服务器

    java基于servlet编写上传下载功能 类似文件服务器

    这篇文章主要为大家详细介绍了java基于servlet编写上传下载功能,类似文件服务器,文中示例代码介绍的非常详细,具有一定的参考价值,感兴趣的小伙伴们可以参考一下
    2016-07-07
  • 关于feign接口动态代理源码解析

    关于feign接口动态代理源码解析

    这篇文章主要介绍了关于feign接口动态代理源码解析,具有很好的参考价值,希望对大家有所帮助。如有错误或未考虑完全的地方,望不吝赐教
    2022-03-03
  • SpringBoot构建Restful service完成Get和Post请求

    SpringBoot构建Restful service完成Get和Post请求

    这篇文章主要介绍了SpringBoot构建Restful service完成Get和Post请求的示例代码,感兴趣的朋友一起看看吧
    2017-08-08
  • 使用java实现百万级别数据导出excel的三种方式

    使用java实现百万级别数据导出excel的三种方式

    这篇文章主要介绍了使用java实现百万级别数据导出excel的三种方式,有些业务系统可能动辄涉及到百万上千万的数据,用正常的方法效率就变得很低,今天我们来看看这几种实现思路
    2023-03-03
  • JDK version和class file version(Class编译版本号)对应关系解读

    JDK version和class file version(Class编译版本号)对应关系解读

    这篇文章主要介绍了JDK version和class file version(Class编译版本号)对应关系,具有很好的参考价值,希望对大家有所帮助。如有错误或未考虑完全的地方,望不吝赐教
    2023-07-07
  • Spring源码之事件监听机制(实现EventListener接口方式)

    Spring源码之事件监听机制(实现EventListener接口方式)

    这篇文章主要介绍了Spring源码之事件监听机制(实现EventListener接口方式),具有很好的参考价值,希望对大家有所帮助,如有错误或未考虑完全的地方,望不吝赐教
    2024-08-08
  • springboot实现配置文件关键信息加解密

    springboot实现配置文件关键信息加解密

    在项目配置文件中常常会配置如数据库连接信息,redis连接信息等,连接密码明文配置在配置文件中会很不安全,所以本文就来聊聊如何使用springboot实现配置文件关键信息加解密吧
    2025-05-05
  • mybatis配置Mapper.xml文件时遇到的问题及解决

    mybatis配置Mapper.xml文件时遇到的问题及解决

    这篇文章主要介绍了mybatis配置Mapper.xml文件时遇到的问题及解决方案,具有很好的参考价值,希望对大家有所帮助。如有错误或未考虑完全的地方,望不吝赐教
    2023-01-01

最新评论