2012-11-25 105 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你的欢迎.... –

相关问题