我为获取文件扩展名数组制作了此代码,以检查该文件夹中是否有任何图像:
if (file.isDirectory()) {
listFile = file.listFiles();
extension = new String[listFile.length];
for (int i = 0; i < listFile.length; i++) {
FilePathStrings[i] = listFile[i].getAbsolutePath();
FileNameStrings[i] = listFile[i].getName();
int ex = FilePathStrings[i].lastIndexOf('.');
if (ex >= 0) {
extension[i] = FilePathStrings[i].substring(ex+1);
}
}
if (!Arrays.asList(extension).contains("jpg") || !Arrays.asList(extension).contains("jpeg")
|| !Arrays.asList(extension).contains("png")) {
//Do Something
}
但即使路径中有一些带有精确“jpg”扩展名的图像(获取文件路径和listfile的部分100%正常工作),它也总是返回true。
我尝试使用文件名和文件路径,但没有使用它们。
答案 0 :(得分:2)
listFiles
还需要FileFilter
作为参数
File[] files = file.list(new FilenameFilter() {
public boolean accept(File directory, String fileName) {
return fileName.endsWith(".jpg") || fileName.endsWith(".png");
}
});
您可以使用它来过滤掉您不感兴趣的文件
答案 1 :(得分:0)
我相信之前在Java: Find .txt files in specified folder
中已经回答了这个问题上面的线程用于查找带有txt扩展名的名称,可以很容易地修改它以返回jpeg / jpg或png
答案 2 :(得分:0)
你在问题中没有返回真正的代码。 我假设您在问为什么// Do Something代码正在执行?
这是因为If语句中的OR条件
if (!Arrays.asList(extension).contains("jpg") || !Arrays.asList(extension).contains("jpeg")
|| !Arrays.asList(extension).contains("png")) {
//Do Something
}
如果你只有jpg文件,首先不满足条件。但是第二个/第三个将满足并且// Do Something将被执行。
您必须更改如下所示的代码
if (Arrays.asList(extension).contains("jpg") || Arrays.asList(extension).contains("jpeg")
|| Arrays.asList(extension).contains("png")) {
//Dont do...
}else{
//Do Something
}