Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/azure/11.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/video/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
返回java中的文件扩展名_Java - Fatal编程技术网

返回java中的文件扩展名

返回java中的文件扩展名,java,Java,我有一个包含以下值的参数 String filesTypesallowed =".xsl,.xslx "; 现在我已经在另一个名为filterfile的方法中传递了这个参数,如下所示,因为您可以看到,在这个方法中,我得到的文件名是一个参数,在这个参数中,我必须得到任何文件名,假设它是abc.csv文件,所以我要做的是检查我在参数fileName中得到的文件是否以扩展名.xlsx或.xls结尾,在这种情况下,我必须返回文件名,但除了扩展名,让我们假设我得到了一个扩展名为ert.csv的文件,在

我有一个包含以下值的参数

 String filesTypesallowed =".xsl,.xslx ";
现在我已经在另一个名为filterfile的方法中传递了这个参数,如下所示,因为您可以看到,在这个方法中,我得到的文件名是一个参数,在这个参数中,我必须得到任何文件名,假设它是abc.csv文件,所以我要做的是检查我在参数fileName中得到的文件是否以扩展名.xlsx或.xls结尾,在这种情况下,我必须返回文件名,但除了扩展名,让我们假设我得到了一个扩展名为ert.csv的文件,在这种情况下,我必须返回空值

请告知如何实现这一点,我所尝试的是

private String filterfile(String fileName , String filesTypesallowed) {
String s ; 
s =fileName.substring(fileName.lastIndexOf("."));



}

您可以拆分
文件类型sallowed
,然后检查扩展名是否为其中任何一个:

private String filterfile(String fileName , String filesTypesallowed) {
    String extension = fileName.substring(fileName.lastIndexOf("."));
    String[] allowedExtensions = filesTypesallowed.split(",");
    if (Arrays.asList(allowedExtensions).contains(extension)) {
        return fileName;
    } 
    return null;    
}

您可以拆分数组,然后从中构建一个
,只需使用
anyMatch

例如:

private String filterFile(final String fileName, final String fileTypesAllowed) {
    return Stream.of(fileTypesAllowed.trim().split(","))
                 .anyMatch(ext -> ext.equals(fileName.substring(fileName.lastIndexOf(".")))) 
                     ? fileName 
                     : null;
}

请注意,我调用了
String.trim
,因为您给我们的示例末尾包含一个空格,我不确定这是否是打字错误。。。如果需要,请将其删除。

此问题有两个关键部分,获取文件扩展名和检查字符串是否以这些扩展名中的任何一个结尾

要获取文件扩展名,您需要使用。若我们给它传递一个逗号,它将返回一个由逗号分隔的部分组成的数组:

String[] extensions = fileTypesAllowed.split(",");
要检查字符串是否以扩展名结尾,我们需要在扩展名之间循环,并使用以检查字符串是否以扩展名结尾:

for (String extension: extensions){
    if (fileName.endsWith(extension){
        return fileName;
    }
}
//If we get here, then it doesn't end with any of the extensions
return null;

作为旁注,
filetypesallow
变量的末尾包含一个空格。您可以使用删除它,但理想的方法是首先将字符串数组传递到函数中。将列表作为字符串传递并不是一种有效的方法。

您想返回字符串还是布尔值?如果是字符串,那么该字符串应该包含什么?@NathanMerrillbwell我试图返回一个字符串,该字符串包含在fileName参数中分配给我的整个文件名,只有当它是.xsl或.xslx时才返回,如果使用Java 7或更高版本,则可以使用方法string.endsWith(string)。另外,如果您只想选择可接受的文件,那么a可能会对您有所帮助。
filesTypesAllowed
在示例中以空格结尾。创建扩展列表与迭代扩展不是有点低效吗?