簡體   English   中英

如何在Java中驗證文件名

[英]How to validate a file name in java

我正在處理coverity問題,我需要使用java中的regEx驗證文件名。 在我的應用程序中,支持.pdf,.txt,csv等。 我的文件名從user中獲取為xxx.txt。 我想用正確的擴展名格式驗證我的文件名,並且不包含除點(例如.txt)以外的任何特殊字符。

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

僅當文件路徑完成正確的驗證后,以下代碼才可以工作。

filePath += "/" + fileName;

看看String.endsWith()方法

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

或使用方法String.matches()

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

這是一個很糟糕的答案,因為它僅驗證文件名是否以所需的擴展名結尾,而沒有按照原始問題的要求驗證其余文件名。 像這樣的東西會更好一些:

fileName.matches("[-_. A-Za-z0-9]+\\.(pdf|txt|csv)");

這樣可以確保文件名僅包含一個或多個-,_,PERIOD,SPACE或字母數字字符,並在文件名末尾緊跟.pdf,.txt或.csv中的一個。 您的系統可能允許文件名中包含其他字符,如果需要,可以將其添加到此列表中。 另一種不太安全的方法是防止出現“壞”字符,例如:

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

這只是防止/或\\字符出現在所需結尾擴展名之前的文件名中。 但這並不能防止潛在的其他危險字符,例如NULL字節。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM