2012-11-25 163 views
1

我知道如何創建列表這段代碼我如何獲得目錄和子目錄中的所有文本文件?

​​

包含所有在目錄中的文件,但如果我有目錄下有文件和子文件目錄和子目錄具有文件和子文件子目錄等。

我如何創建列表包含目錄和子目錄中的所有文件?

+0

您應指定什麼編碼您使用的語言... – arkascha

+0

已propably被回答過了: http://stackoverflow.com/questions/13444701/recursively-find-all-text-files-in-directory –

回答

1

你可以這樣做:

protected java.util.List<File> setDirMap(File inputDir) { 
    if (!inputDir.isDirectory()) { 
     throw new IllegalArgumentException("Input File is not a directory"); 
    } 
    Set<File> ans = new HashSet<File>(); 
    ans.add(inputDir); 
    File[] dir = inputDir.listFiles(new FileFilter() { 

     @Override 
     /** 
     * Returns true if pathname is a directory. False if not 
     */ 
     public boolean accept(File pathname) { 

      if (pathname.isDirectory()) { 
       return true; 
      } else { 
       return false; 
      } 
     } 
    }); 
    ans.addAll(Arrays.asList(dir)); 
    for (File current : dir) { 
     ans.addAll(setDirMap(current)); 
    } 
    return new ArrayList<File>(ans); 

} 

這將返回所有目錄和子目錄。然後,您可以檢查任何你想要的

+0

對不起,我不知道如何解釋代碼工作?我的文件是文本只有我沒有在目錄中的圖像。我想創建列表只包含文件名稱 – Mesho

+0

我已修改,它基本上在遞歸查找的所有目錄 – Jatin

+0

因此,現在在每個目錄中,你檢查任何擴展的所有文件,無論你想要 – Jatin

0

試試這個代碼的每個目錄,這個使用遞歸....

import java.io.File; 
import java.util.ArrayList; 

public class FindIt { 

    private ArrayList<String> arList = new ArrayList<String>(); 

    public void find(String s) { 

     File f = new File(s); 

     File[] fArr = f.listFiles(); 

     for (File x : fArr) { 

      if (x.isFile()) { 

       if (x.getName().endsWith(".txt")) { 

        arList.add(x.getName()); 

       } 

       else { 

        continue; 
       } 

      } 

      else { 

       find(x.getAbsolutePath()); 
      } 
     } 

    } 

    public static void main(String[] args) { 

     FindIt f = new FindIt(); 
     f.find("D:\\xtop"); 

     for (String fileName : f.arList) { 

      System.out.println(fileName); 
     } 
    } 

} 
+0

謝謝大家。我會測試代碼,我希望它的工作。 – Mesho

+0

@MesharyAlaoshan你的歡迎.... –

相關問題