日期:2014-05-19  浏览次数:20690 次

如何获取所有文件路径
目录结构:根文件夹D:\emap 下有N个文件夹 如:10001、10002、10003、10004 。。。。 
子文件夹下又有n个文件夹,如10001文件夹下有1、2、3、4、5 。。。。
那么10001文件下的1文件夹下有1.txt、2.txt等文件 ,我现在要获得每个子文件夹最底层文件的路径,用java代码如何实现

------解决方案--------------------
Java code

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

public class ListFiles {

    private static List ListFile(File path) {
        // 遍历出的各个文件全路径
        String strPath;
        List fileList = new ArrayList() ;
        File[] files;
        files = path.listFiles(); // 得到一个由文件和目录组成的数组;
        if (files == null){  //如果文件夹不存在或者没有其他文件目录的话,直接返回
            return new ArrayList() ;
        }
        Arrays.sort(files); // 把数组按升序排列;
        for (int i = 0; i < files.length; i++) {
            strPath = files[i].toString();
            // 进行相关操作
            // 递归
            if (files[i].isDirectory()) // 测试是否为目录;
            {
                List tmp = new ArrayList() ;
                System.out.println(files[i].getName()); 
                tmp = ListFile(files[i]); 
                fileList.addAll(tmp) ; //把其中子目录的文件加到list中

            }else{
                fileList.add(files[i]) ;
            }

        }
        return fileList;

    }

    /**
     * @param args
     */
    public static void main(String[] args) {
        File f=new File("F:\\bill\\archive\\afm");

        List files = ListFile(f);
          
          System.out.println("begin...") ;
          String name  ="" ;
        for (int i =0; i < files.size();i++){
            name = ((File)files.get(i)).getName() ;//不要后缀 ,就自己处理一下嘛,太懒啦
//            name = name.substring(0, name.lastIndexOf(".")) ;
            System.out.println("文件名.后缀: " + name + "---文件名:" + name.substring(0, name.lastIndexOf(".")) );

        }
        System.out.println("end.") ;

    }

}

------解决方案--------------------
前几天回答问题写的:

name = ((File)files.get(i)).getName() ;
-->
name = ((File)files.get(i)).getAbsolutePath() ;
------解决方案--------------------
探讨
Java code


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

public class ListFiles {

private static List ListFile(File path) {
……

------解决方案--------------------
1楼的代码稍作修改。
Java code


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

public class ListFiles {
    private static   List fileList = new ArrayList() ;

    private static List ListFile(File path) {
        // 遍历出的各个文件全路径
        String strPath;
        File[] files;
        files = path.listFiles(); // 得到一个由文件和目录组成的数组;
        if (files == null){  //如果文件夹不存在或者没有其他文件目录的话,直接返回
            return new ArrayList() ;
        }
        Arrays.sort(files); // 把数组按升序排列;
        for (int i = 0; i < files.length; i++) {
            strPath = files[i].toString();
            // 进行相关操作
            // 递归
            if (files[i].isDirectory()) // 测试是否为目录;
            {
                fileList.addAll(ListFile(files[i])) ; //把其中子目录的文件加到list中

            }else{
                fileList.add(files[i]) ;
            }

        }
        return fileList;

    }
 }

------解决方案--------------------
稍作修改。
===========================================
import java.io.File;
import java.util.ArrayList;
import java.util.Arrays;
import java.util.List;

public class ListFiles {
private static List fileList = new ArrayList() ;

private static List ListFile(File path) {