java在实现Minio文件上传时,当文件名出现特殊标点符号时,无法上传文件。查阅资料发现,minio不支持特殊文件名的文件。修改文件名工具类
时间: 2024-02-27 07:54:31 浏览: 295
可以使用Java的正则表达式或字符串替换来实现文件名的修改工具类,以下是一个示例:
```java
import java.util.regex.Pattern;
public class FileNameUtils {
/**
* 替换文件名中的特殊字符,保留字母、数字、下划线、中划线、点号
* @param fileName 文件名
* @return 替换后的文件名
*/
public static String replaceSpecialChars(String fileName) {
String regex = "[^0-9a-zA-Z_\\-.]";
Pattern pattern = Pattern.compile(regex);
return pattern.matcher(fileName).replaceAll("");
}
/**
* 将文件名中的中文进行URL编码
* @param fileName 文件名
* @return 编码后的文件名
*/
public static String encodeChineseFileName(String fileName) {
String encodedFileName = null;
try {
encodedFileName = URLEncoder.encode(fileName, "UTF-8");
} catch (UnsupportedEncodingException e) {
e.printStackTrace();
}
return encodedFileName;
}
}
```
使用方法:
```java
String fileName = "测试@文件.txt";
fileName = FileNameUtils.replaceSpecialChars(fileName);
fileName = FileNameUtils.encodeChineseFileName(fileName);
```
上述代码中,`replaceSpecialChars`方法使用正则表达式去掉了文件名中的特殊字符,只保留了字母、数字、下划线、中划线、点号五种字符。`encodeChineseFileName`方法对文件名中的中文进行了URL编码,以确保符合Minio的文件名要求。
阅读全文