JAVA遍历一个文件夹内的子文件夹(子文件夹内还有多个子文件夹),并区分文件夹和子文件夹,放到map里,再把父文件夹和子文件夹全部取出来。

解决方案 »

  1.   

    File.listFile();
    File.isDiretory();
      

  2.   

    我写的遍历文件夹的代码,
    public void seekFiles(String strName) {
    File outFile = new File(strName);
    if (outFile.isDirectory()) {
    System.out.println(outFile.getName());
    String[] fileNames = outFile.list();
    for (int i = 0; i < fileNames.length; i++) {
    ListFile.seekFiles(outFile.getPath() + "\\" + fileNames[i]);
    }
    } else {
    System.out.println("No file");
    }
    }关键是怎样分文件夹和子文件夹放到Map里面?
      

  3.   

    我知道用递归,而且都遍历出来了,关键是怎样区分文件夹和子文件夹,然后放到Map里面,再取出来?
      

  4.   


    import java.io.File;
    import java.util.ArrayList;
    import java.util.Iterator;
    import java.util.LinkedList;
    import java.util.Map;
    import java.util.TreeMap;
    import java.util.Map.Entry;
    public class GetDirectory
    {
    public static TreeMap<File, LinkedList<File>> dirFiles = new TreeMap<File, LinkedList<File>>();

    static void getDirectoryFiles(File dir)
    {
    if (!dir.isDirectory())
    {
    return;
    }
    LinkedList<File> files= new LinkedList<File>();
    File[] filesinDir = dir.listFiles();
    if(filesinDir.length > 0)
    {
    for (int i = 0; i < filesinDir.length; i++)
    {
    files.add(filesinDir[i]);
    }
    }
    else 
    {
    dirFiles.put(dir, null);
    return;
    }
    dirFiles.put(dir, files);
    for(int i = 0; i < filesinDir.length; i++)
    {
    if (filesinDir[i].isDirectory())
    {
    getDirectoryFiles(filesinDir[i]);
    }
    }

    } /**
     * @param args
     */
    public static void main(String[] args)
    {
    GetDirectory.getDirectoryFiles(new File("src"));
    //Iterator<Entry<File, LinkedList<File>>> iterator = GetDirectory.dirFiles.entrySet().iterator();
    Iterator<File> iterator = GetDirectory.dirFiles.keySet().iterator();
    while (iterator.hasNext())
    {
    File dir = iterator.next();
    System.out.println(dir.getAbsolutePath());
    LinkedList<File> fileInDir = GetDirectory.dirFiles.get(dir);
    if (fileInDir != null)
    {
    Iterator<File> it = fileInDir.iterator();
    while (it.hasNext())
    {
    System.out.println(it.next().getAbsolutePath());

    }
    }
    }
    }}
      

  5.   

    import java.io.File;
    public class ListFile
    {
        public static void listFile(File file) throws Exception
         {
             //如果输入的是一个文件就直接将文件的全路径直接打印出来
             if (file.isFile())
             {
                 System.out.println("File :" + file.getAbsolutePath());
             }
             else
             {
                 
                 System.out.println("Dir :" + file.getAbsolutePath());
                 File[] files = file.listFiles();
                 for(int i = 0; i < files.length; i++)
                 {
                     listFile(files[i]);
                 }
              }
          }
    注:如果是一个目录就递归调用 listFile