返回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
在示例中以空格结尾。创建扩展列表与迭代扩展不是有点低效吗?