获取文件扩展名方法无法正常工作

时间:2014-09-25 18:58:42

标签: java android

我为获取文件扩展名数组制作了此代码,以检查该文件夹中是否有任何图像:

       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。

我尝试使用文件名和文件路径,但没有使用它们。

3 个答案:

答案 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
          }