之前遇到传入的URI不合法,导致Android crash的问题,所以需要在传入之前判断一些文件名是否合法,不合法的话需要根据mimetype重新生成一个随机文件名。
主要的方法如下:
正则表达式大同小异,也可以用于其他语言对于合法文件名的判断。
1、只能包含英文字符,开始和结束不允许有空格。
2、不能存在两个点号。
public static void main(String[] args) {
System.out.println(isFileNameValid("text.pdf"));
System.out.println(isFileNameValid("text..txt"));
System.out.println(isFileNameValid("text tes.txt"));
System.out.println(isFileNameValid("text text .txt"));
System.out.println(isFileNameValid(" t ext.txt"));
System.out.println(isFileNameValid("text.txt."));
System.out.println(isFileNameValid("text.123.454"));
System.out.println(isFileNameValid("text_/123.454"));
}
private static boolean isFileNameValid(String name){
if (name == null || name.length() > 255){
return false;
} else {
return name.matches("^[a-zA-Z0-9](?:[a-zA-Z0-9 ._-]*[a-zA-Z0-9])?\\.[a-zA-Z0-9_-]+$");
}
}