2014-09-25 103 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