该问题之前发错地方,一直未见有人回复,再发一次,还望版主见谅!
/*
需求:利用递归算法,将指定目录中的指定类型文件路径存储到一个指定文件中
思路:
1、要在指定目录下查找相应类型的文件,利用递归算法遍历该目录
2、将遍历过程中符合要求的文件存储到一个集合中
3、利用输出流将集合中文件的绝对路径打印到指定的文件中
*/
import java.io.*;
import java.util.*;
class FileDemo
{
public static void main(String[] args)
{
//创建一个文件对象关联指定目录
File dir=new File("D:");
//创建一个集合,存储文件类型的对象
List<File> list=new ArrayList<File>();
fileToList(dir,list);
//创建一个文件对象,关联指定的文件名
File file=new File(dir,"java文件列表.txt");
writeToFile(list,file.toString());
}
//遍历目录,将指定文件存入到参数集合中
public static void fileToList(File dir,List<File> list){
//利用File类的listFiles()方法,将目录中的文件存储到一个File数组中
File[] files=dir.listFiles();
//利用递归算法,遍历目录中的文件,如果遍历到的目录是以.java文件结尾,将该问价添加到集合中
for(File file:files){
if(file.isDirectory())
fileToList(file,list);
else{
if(file.getName().endsWith(".java"))
list.add(file);
}
}
}
//创建文件写入输出流,将集合内文件的据对路径储到指定文件
public static void writeToFile(List<File> list,String javaListFile){
BufferedWriter bw=null;
try{
bw=new BufferedWriter(new FileWriter(javaListFile));
for(File file:list){
//将file的绝对路径赋值给String变量path
String path=file.getAbsolutePath();
bw.write(path);
bw.newLine();
bw.flush();
}
}
catch(IOException e){
throw new RuntimeException("写入文件失败");
}
finally{
try{
if(bw!=null)
bw.close();
}
catch(IOException ex){
throw new RuntimeException("流文件不存在");
}
}
}
} |
|