如果一个目录下的文件过多,而且还有多级子目录。我们要寻找某一个文件将会变得很麻烦。怎样解决这一问题呢?
我们可以将这一目录下所有的子目录或者文件全部打印并保存到文档中。下次找文件将会变得很简单
下面将用递归的方式获取一个目录下所有文件,并保存到文本文档中。
需求:将一个指定目录下的java文件的绝对路径,存储到一个文本文件中
建立一个java文件列表文件。
思路;
1.对指定的目录进行递归。
2.获取递归过程所有的java文件的路径
3.将这些路径存储到集合中
4.将集合中的数据写入到一个文件中。
import java.io.File;
import java.io.BufferedWriter;
import java.io.FileWriter;
import java.io.IOException;
import java.util.ArrayList;
import java.util.Iterator;
class FileDemo
{
//定义全局私有成员变量
private static ArrayList<String> arraylist=new ArrayList<String>();
public static void main(String[] args)
{
getFiles(new File("e:\\java platform\\java code"));
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<file.length;i++)
{
if(!file[i].isHidden()&&file[i].isDirectory())
getFiles(file[i]);//递归
else
if(file[i].getName().endsWith(".java"))//获取.java文件
arraylist.add(" [file]-----"+file[i].getName());
}
}
//写入文件
public static void writeTo(File to)throws IOException
{
to.createNewFile();//可不写
BufferedWriter bufferedwriter=new BufferedWriter(new FileWriter(to));
Iterator<String> it=arraylist.iterator();//定义迭代器遍历集合
while(it.hasNext())
{
bufferedwriter.write(it.next());
bufferedwriter.newLine();//换行
bufferedwriter.flush();//刷新
}
bufferedwriter.close();//关资源
}
}