Java基础加强三 递归具体案例详解 实现指定目录下文件列表输出
Java递归实例用法
简单需求:
假如我们一个目录下的文件过多,而且还有多级子目录。我们要寻找某一个文件将会变得很麻烦,怎样解决这一问题呢?
分析:
我们可以将这一目录下所有的子目录或者文件全部打印并保存到文档中。下次找文件将会变得很简单。下面将用递归的方式获取一个目录下所有文件,并保存到文本文档中。
实现思路:
1.对指定的目录进行递归
2.获取递归过程所有的java文件的路径
3.将这些路径存储到集合中
4.将集合中的数据写入到一个文件中
实现代码:
package com.wusc.java;
import java.io.BufferedWriter;
import java.io.File;
import java.io.FileWriter;
import java.io.IOException;
import java.util.ArrayList;
import java.util.Iterator;
public class FileDemo {
//定义全局私有成员变量
private static ArrayList
public static void main(String[] args) {
getFiles(new File("E:javadata"));
try {
writeTo(new File("javafilenamelist.txt"));
}catch(IOException i) {
throw new RuntimeException("write fails");
}
}
//获取文件列表
public static void getFiles(File dir) {
File[] file=dir.listFiles();
arraylist.add("[path]-----"+dir.getPath());
for(int i=0;i if(!file[i].isHidden()&&file[i].isDirectory()) getFiles(file[i]);//递归 else //获取.java文件 if(file[i].getName().endsWith(".java")) // 你也可以获取绝对路径+file[i].getAbsolutePath() arraylist.add(" [file]-----"+file[i].getName()); } } //写入文件 public static void writeTo(File to)throws IOException { to.createNewFile();//可不写 System.out.print(to.getAbsolutePath()); BufferedWriter bufferedwriter=new BufferedWriter(new FileWriter(to)); Iterator while(it.hasNext()) { bufferedwriter.write(it.next()); bufferedwriter.newLine();//换行 bufferedwriter.flush();//刷新 } bufferedwriter.close();//关资源 } } 加载目录数据 目录1下面还有一个文件Java1.java 输出结果文件 看完相信你对Java递归有了进一步理解,如有任何疑问,可以留言评论,让大家一起来讨论学习。 欢迎关注,获得更多资料