如何在java中验证文件名

时间:2017-06-05 09:57:09

标签: java

我正在处理覆盖问题,我需要验证文件名     在java中使用regEx。在我的应用程序支持.pdf,.txt,csv等。我的     文件名从用户获取为xxx.txt。我想验证我的文件名     具有适当的扩展格式,不包括任何特殊字符     比点(例如.txt)。

filePath = properties.getProperty("DOCUMENT.LIBRARY.LOCATION");
String fileName = (String) request.getParameter("read");

仅当文件路径完成其正确验证时,以下代码才有效。

filePath += "/" + fileName;

2 个答案:

答案 0 :(得分:0)

查看String.endsWith()方法

if (fileName.endsWith(".pdf")) {
   // do something
}

或使用方法String.matches()

fileName.matches("\\.(pdf|txt|csv)$") 

答案 1 :(得分:0)

这是一个可怕的答案,因为它只验证文件名以所需的扩展名结尾,但不验证原始问题中请求的文件名的其余部分。更像这样的东西会更好:

fileName.matches("[^/\]+\\.(pdf|txt|csv)");

这确保文件名仅包含一个或多个 - ,_,PERIOD,SPACE或字母数字字符,后跟文件名末尾的.pdf,.txt或.csv中的一个。您的系统可能允许文件名中的其他字符,如果需要,您可以将它们添加到此列表中。另一种不太安全的方法是防止“不良”。字符之类的东西:

/myapp

这只是在所需的结束扩展名之前阻止/或\字符在文件名中。但是,这并不能防止其他危险字符,例如NULL字节。