/**************************************
* 功能:将指定目录下的符合条件的文件的绝对路径写到指定的文件当中
* 作者:khq
* 时间:2020年4月21日
**************************************/
package PropertiesDemo;
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.Iterator;
import java.util.List;
public class PropertyTest2 {
public static void main(String[] args) throws IOException {
//将目录封装成对象
File dir = new File("D:\\worFile\\JavaFile");
File newFile = new File("fileList.txt");
if(!newFile.exists())
newFile.createNewFile();
//建立过滤器
FilenameFilter filter = new FilenameFilter() {
@Override
public boolean accept(File dir, String name) {
return name.endsWith(".java");
}
};
ArrayList<File> list = new ArrayList();
getFileList(dir,filter,list);
write2file(list,newFile);
}
//需要指定目录dir,过滤器和容器
public static void getFileList(File dir,FilenameFilter filter,List<File> list) {
//深度遍历指定目录下的文件,并按照指定的过滤器将符合条件的文件选择出来
File[] files = dir.listFiles();
for(File file : files) {
if(file.isDirectory()) {
getFileList(file,filter,list); //如果是目录,就继续递归查找
}else {
if(filter.accept(dir, file.getName())) //将当前目录下符合条件的文件选择出来
list.add(file); //将符合条件的文件的绝对路径加入到列表中
}
}
}
//将指定容器中得到内容写到指定的文件当中,需要try finally
public static void write2file(List<File> list,File fe) throws IOException {
BufferedWriter bw = null;
try {
bw = new BufferedWriter(new FileWriter(fe));
//对列表中的元素进行遍历,然后将其写到指定的文件中
Iterator<File> it = list.iterator();
while(it.hasNext()) { //也可以用for循环
bw.write(it.next().getAbsolutePath());
bw.newLine();
bw.flush();
}
}catch(IOException e) {
throw new RuntimeException("写入失败!");
}finally {
try {
bw.close();
}catch(IOException e) {
throw new RuntimeException("关闭失败!");
}
}
}
}
结果显示: