2014-09-25 79 views
0

我为获取文件扩展阵列检查这个代码,如果任何图像是该文件夹中:获取文件扩展方法不能正常工作

 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 
       } 

但即使有部分图片确切它总是返回true路径中的“jpg”扩展名(获取文件路径和列表文件的部分为100%工作)。

我尝试了文件名和文件路径,但没有工作。

+0

尝试调试它 – 2014-09-25 19:01:11

+1

没有返回,没有什么。并且//由于!Array ... ||,做一些永远不会执行的事情!数组... ... !阵列。您最好放置一些日志语句或打印/记录扩展数组的内容。 – greenapps 2014-09-25 19:03:58

+0

@greenapps我放了'Log.d(“ggg”,扩展名[i]);'并在logcat中完美地打印扩展(并且还有jpg),但它又被恢复为真。 – 2014-09-25 19:18:18

回答

0

你没有在问题中返回真正的代码。 我假设你在问为什么// Do Some代码正在执行?

这是因为OR条件中如果陈述

if (!Arrays.asList(extension).contains("jpg") || !Arrays.asList(extension).contains("jpeg") 
        || !Arrays.asList(extension).contains("png")) { 

      //Do Something 
      } 

如果你只有JPG文件,第一个条件不会得到满足。但是第二个/第三个会满足和/ /执行某些事情。

你要更改代码类似如下所示

  if (Arrays.asList(extension).contains("jpg") || Arrays.asList(extension).contains("jpeg") 
        || Arrays.asList(extension).contains("png")) { 

       //Dont do... 
      }else{ 
       //Do Something 
      } 
+0

哦,是的。我愚蠢的错误。谢谢。 – 2014-09-25 20:35:56

2

listFilesFileFilter需要为放慢参数

File[] files = file.list(new FilenameFilter() { 
    public boolean accept(File directory, String fileName) { 
     return fileName.endsWith(".jpg") || fileName.endsWith(".png"); 
    } 
}); 

,你可以用它来过滤掉你不感兴趣的

+0

你的答案也是正确的,但其他答案更完整。但我没有找到自己的代码问题。 – 2014-09-25 19:37:07

0

我相信这已经Java: Find .txt files in specified folder

以前回答文件以上线程用于查找带有txt扩展名的名称,可以轻松修改该名称以返回jpeg/jpg或png

+0

是的,它做了这项工作。谢谢。 – 2014-09-25 19:35:43

相关问题