代码如下:新人报道 请多指教(有分就好了)
package com.bi.Lc;
import java.io.BufferedWriter;
import java.io.File;
import java.io.FileWriter;
import java.io.FilenameFilter;
import java.io.IOException;
import java.util.ArrayList;
import java.util.List;
/*
* 思路:
* 1.必须进行深度遍历,因为有很多子目录,子目录中也可能有自己的子目录
* 2.要在遍历的过程中进行过滤,将符合的内容存储到容器中
* 3.对容器中的内容进行遍历并将绝对路径写入到文件中
*
*
*/
public class FileList {
public static void main(String[] args) {
File dir = new File("E:\\JavaStu");//这个一定要有哦
FilenameFilter filter = new FilenameFilter(){
@Override
public boolean accept(File dir, String name) {
// TODO Auto-generated method stub
return name.endsWith(".avi");//此处是文件的后缀名,因为是别人的电脑,不太想慢慢找java文件
//就写成了.avi,
}
};
List<File> list = new ArrayList<File>();
getFiles(dir,filter,list);
File destFile = new File(dir,"a.txt");
writer2File(list, destFile);
}
/**
* 对指定目录中的内容进行深度遍历,并按照指定过滤器,进行过滤
* 将过滤后的内容存储到指定容器List中
*
* @param dir
* @param filter
* @param list
*/
public static void getFiles(File dir,FilenameFilter filter,List<File> list) {
File[] files = dir.listFiles();
for(File file:files){
if(file.isDirectory()){
//进行递归
getFiles(file,filter,list);
}else{
//将符合的文件存储到list集合中
if(filter.accept(dir, file.getName())){
list.add(file);
}
}
}
}
/**
* 将list集合写入到目的文件中
* @param list
* @param destFile
*/
public static void writer2File(List<File> list,File destFile){
BufferedWriter bw = null;
try{
bw = new BufferedWriter(new FileWriter(destFile));
for(File file:list){
bw.write(file.getAbsolutePath());
bw.newLine();
bw.flush();
}
}catch(IOException e){
throw new RuntimeException("写入失败");
}finally{
if(bw!=null){
try {
bw.close();
} catch (IOException e) {
throw new RuntimeException("关闭失败");
}
}
}
}
}
|
|