学习Java小结-2

来源:互联网 发布:淘宝嘻哈店铺 编辑:程序博客网 时间:2024/05/19 09:17

学习Java也有近一个月了,基础语法、常用类也有所了解。上周把文件相关操作进行了一个总结,制作了一个简单的文件常用操作的工具类。

此处详解遍历文件夹、获取文件夹内所有文件
工具类包含了容下功能的实现:
1、 拷贝文件
2、 移动文件
3、 遍历文件夹
4、 获取文件夹内所有文件
5、 文件打包与解包

3、遍历文件

思路:要遍历一个文件,首先应当判断该文件是否为文件夹,如果是,则获取当前文件夹内的所有文件;然后在对每一个文件进行同样的操作;如果不是文件夹,则将该文件的路径进行输出。不难看出遍历文件需要用到递归
下面请看源代码

/**     * 遍历并输出文件绝对路径     * @param srcPath 要遍历的文件绝对路径字符串     * @return int 遍历结果 -1 表示文件不存在 ;0 表示 该对象是一个文件,不是目录,否则为当前目录下的文件数量     */    public static int showAllFiles(String srcPath) {        File srcFile = new File(srcPath);        if (!srcFile.exists()) {            System.out.println(srcPath + "文件不存在");            return -1;        }        if (srcFile.isDirectory()) {            File[] files = srcFile.listFiles();            System.out.println(srcFile.getAbsolutePath() + ",下有" + files.length + "个文件");            //使用for - each遍历文件夹中的文件            for (File file : files) {                //如果是目录,则递归遍历文件夹                if (file.isDirectory()) {                    showAllFiles(file.getAbsolutePath());                } else {                //不是目录则输出文件的局对路径                    System.out.println(file.getAbsolutePath());                }            }            return files.length;        }else {            System.out.println(srcFile.getAbsolutePath());            return 0;        }    }

4、获取文件夹中的所有文件

思路:经过上面对文件夹的遍历方法的实现后,要获取文件夹中的所有文件就简单了许多。只需要在遍历文件夹的时候将每一个文件对象存入一个list集合中即可
根据以上思路,需要一个List对象才存储所有的文件对象。那么这个List对象应该怎么创建呢?因为我们这里要递归遍历文件家中的每一个文件对象,因此不能在方法内创建这个List对象;所有应该将该List对象作为参数传入。因为要频繁的添加文件对象,所有我在这选用了LinkedList集合对象。

如果想获得目录树的结构形式,请将文件存入容器的语句移动到递归调用之前

        /**         * 获取文件家中的所有对象         * @param srcPath 要遍历的文件对象         * @param files 文件家中的所有对象,包含自身         */    public static void getAllFiles(File srcPath, LinkedList<File> files) {        //判断源文件是否存在,若不存在则不用遍历        if (srcPath.exists()) {            //获取当前文件夹中的所有文件对象数组            File[] fileList = srcPath.listFiles();            //遍历当前文件夹中的所有对象            if (fileList != null && fileList.length > 0) {                for (File src : fileList) {                    //递归遍历每一个子文件                    getAllFiles(src, files);                }            }            //将当前文件存入集合容器中            files.add(srcPath);        }    }
原创粉丝点击