如何匹配包含空格的文件名

时间:2018-08-14 09:03:10

标签: java file file-upload

我们需要验证文件类型。因此,应接受某些文件类型。

只要文件名之间没有空格,实际代码就可以正常工作。但是,如果有一个文件,我们到达"error ...!!!"路径,程序会说该文件无效。

示例:Home home.png被标记为无效,而HomeHome.png被标记为有效。

即使文件名中包含空格,如何匹配文件名?

下面是我的代码

public boolean fileUpload(UploadedFile uploadFile) {

    boolean validFile = true;
    System.out.println("file date...!!!" + uploadFile.getFileName());
    System.out.println("file date...!!!" + uploadFile.getSize());

    String expression = "([^\\s]+(\\.(?i)(jpg|xls|xlsx|doc|jpeg|png|pdf|ppt|pptx|docx|txt|xml|PNG|101701|AQR|ERR|CFR|RPA|AES|CAO|CIC|CAI|IMC|IMA|ITC|CDN|CIR|IMR|IME|ITR|CDR|CUN|CIN|CCN|CGI|IDL|IGR|IIL|IQL|NNL|SSR|STN))$)";

    if ((uploadFile.getSize() != 0)) {

        System.out.println(" file name" + uploadFile.getFileName());

        if ((!uploadFile.getFileName().matches(expression))) {
            System.out.println("error ...!!!" + uploadFile.getFileName());
            validFile = false;
        }
    }
}

3 个答案:

答案 0 :(得分:0)

因为您要跳过表达式中的空格。即插入符号(^

String expression = "([^\\s]+(\\.(?i)(jpg|xls|xlsx|doc|jpeg|png|pdf|ppt|pptx|docx|txt|xml|PNG|101701|AQR|ERR|CFR|RPA|AES|CAO|CIC|CAI|IMC|IMA|ITC|CDN|CIR|IMR|IME|ITR|CDR|CUN|CIN|CCN|CGI|IDL|IGR|IIL|IQL|NNL|SSR|STN))$)";

代替使用:

String expression = "([^\\.]+(\\.(?i)(jpg|xls|xlsx|doc|jpeg|png|pdf|ppt|pptx|docx|txt|xml|PNG|101701|AQR|ERR|CFR|RPA|AES|CAO|CIC|CAI|IMC|IMA|ITC|CDN|CIR|IMR|IME|ITR|CDR|CUN|CIN|CCN|CGI|IDL|IGR|IIL|IQL|NNL|SSR|STN))$)";

答案 1 :(得分:0)

如果可以使用正则表达式,请尝试

String fileName = uploadFile.getFileName()。replaceAll(“ \ s +”,“”);

答案 2 :(得分:0)

(([[a-zA-Z0-9 \ s _ \\。\-:])+。(?i)(jpg | xls | xlsx | doc | jpeg | png | pdf | ppt | pptx | docx | txt | xml | 101701 | AQR | ERR | CFR | RPA | AES | CAO | CIC | CAI | IMC | IMA | ITC | CDN | CIR | IMR | IME | ITR | CDR | CUN | CIN | CCN | CGI | IDL | IGR | IIL | IQL | NNL | SSR | STN)$)

此regix可以处理任何空间问题