学习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); } }
阅读全文
0 0
- 学习Java小结-2
- Java学习小结
- Java”方法“学习小结
- JAVA RMI学习小结
- Java学习小结
- java学习小结
- JAVA学习小结
- JAVA学习小结
- UserHandle.java学习小结
- Java线程学习小结
- Java基本学习小结
- Java Swing学习小结
- JAVA SE学习小结
- java IO学习小结
- Java Iterator学习小结
- Java继承学习小结
- Java多线程学习小结
- java学习小结 11.9
- 集成算法-Xgboost
- swap分区
- Java 三大特性是:封装,继承,多态
- HDU6197 最长有序子序列 DP+二分查找
- PAT (Basic Level) Practise (中文) 1057. 数零壹(20)
- 学习Java小结-2
- 貌不惊人,但味道一定惊艳你
- BCD码和十进制的相互转换
- ForkJoin框架(一):ForkJoin框架概述
- HDU
- 将数据通过php语法存入到表里面
- 虚拟机入门二,虚拟机的三种网络模式
- 津津的储蓄计划
- 字符串优化,与字符串的不可变,字符串对象重载的参数