Java遍历文件夹工具类
使用本工具类,只需要传入一个文件地址,
就可以找出里面所有的文件,或者可以找里面固定格式的文件,如图片文件或者视频文件。
一.工具类的实现
全部思路在代码里面都有详细的解释。
其中,涉及到集合的使用,File类的基本方法的使用,还有回调方法的使用。
具体代码:
package com.lwz.util;
import java.io.File;
import java.util.ArrayList;
import java.util.List;
/**
* 这是一个获取目录下所有文件夹内的所有文件的封装类
* 当然前提是你要传进来一个正确路径的文件夹
* */
public class FileUtils {
//获取文件夹下所有的文件
public static List
getAllFiles(String dir){
//创建一个集合存放遍历到的File
List< File >files=new ArrayList
();
File file=new File(dir);
//文件夹必须存在 并且要是文件夹
if (file.exists()&&file.isDirectory()) {
//重点! 这里要本身一直遍历
longErgodic(file,files);//把遍历得到的东西存放在files里面
}
return files;
}
//重点理解,这是一个递归方法,会不断来回调用本身,但是所有获得的数据都会存放在集合files里面
private static void longErgodic(File file, List
files) {
//.listFiles()方法的使用
//把文件夹的所有文件(包括文件和文件名)都放在一个文件类的数组里面
File[] fillArr=file.listFiles();
//如果是一个空的文件夹
if (fillArr==null) {
//后面的不执行,直接返回
return;
}
//如果文件夹有内容,遍历里面的所有文件(包括文件夹和文件),都添加到集合里面
for (File file2 : fillArr) {
//如果只是想要里面的文件或者文件夹或者某些固定格式的文件可以判断下再添加
files.add(file2);
//添加到集合后,在来判断是否是文件夹,再遍历里面的所有文件
//方法的递归
longErgodic(file2, files);
}
}
}
二.主方法的调用类
本示例主要教你怎样,使用这个封装的工具类,首先要明白工具类的方法返回的是一个集合,所有在调用之前要先创建一个集合接收数据
具体代码:
package com.xykj.fileOperate;
import java.io.File;
import java.io.IOException;
import java.util.ArrayList;
import java.util.List;
import com.lwz.util.FileUtils;
public class Operate {
/**
* 对文件/文件夹的基本操作
*
* 有一点值得要注意的是getName和getPath、getAbsolutePath的区别
* getName输出的只是文件名,不包括文件路径
* (java里面)getPath、getAbsolutePath输出的是文件路径加文件名
* */
public static void main(String[] args) throws IOException {
//创建一个集合来接收获得的文件
List
list = new ArrayList
();
//定义一个路径,这里是拿D盘做例子
String path="D:/";
//调用工具类的静态方法,返回的是一个集合对象
list = FileUtils.getAllFiles(path);
// 获取D盘下的所有的文件(包括文件和文件夹)
for (File file : list) {
System.out.println(file.getPath());
}
// 获取D盘下的所有图片呢》?图片格式:jpg、png、jif,假设找这三种格式的
for (File file3 : list) {
String picturePath = file3.getPath();
if (picturePath.endsWith(".jpg") || picturePath.endsWith(".png")
|| picturePath.endsWith(".jif")) {
System.out.println(picturePath);
}
}
}
}