package yuecheng.ch18.lianxi2; import java.io.File; import java.util.ArrayList; import java.util.List; /** * * 这是一个获取目录下所有文件夹内的所有文件的封装类 */ public class Text2 { //获取文件夹下所有的文件 public static List<File> getAllFiles(String dir){ //创建一个集合存放遍历到的File List< File >files=new ArrayList<File>(); File file=new File(dir); if (file.exists()&&file.isDirectory()) { // 这里要本身一直遍历
//把遍历得到的东西存放在files里面
longErgodic(file,files);
}
return files;}//这是一个递归方法,会不断来回调用本身,但是所有获得的数据都会存放在集合files里面
private static void longErgodic(File file, List<File> files)
{
//.listFiles()方法的使用 //把文件夹的所有文件(包括文件和文件名)都放在一个文件类的数组里面
File[] fillArr=file.listFiles();
//如果是一个空的文件夹
if (fillArr==null)
{
//后面的不执行,直接返回
return;
}
//如果文件夹有内容,遍历里面的所有文件(包括文件夹和文件),都添加到集合里面
for (File file2 : fillArr)
{
//如果只是想要里面的文件或者文件夹或者某些固定格式的文件可以判断下再添加
files.add(file2);
//添加到集合后,在来判断是否是文件夹,再遍历里面的所有文件 //方法的递归 l
ongErgodic(file2, files);
}
}
}
---------------------------------------------------------------------------------------------
package yuecheng.ch18.lianxi2; import yuecheng.ch18.lianxi2.Text2; import java.io.File; import java.util.List; public class Test_2 { /** * 递归实现输入任意目录,列出文件以及文件夹 * * 设计:在FileUtils类里面实现了逻辑操作,在另一边调用就可以了 * */ public static void main(String[] args) { //比如输入E盘 List<File>list=Text2.getAllFiles("F:"); //输出所有的文件和文件夹的名字 for (File file : list) { System.out.println(file); } } }