A股上市公司传智教育(股票代码 003032)旗下技术交流社区北京昌平校区

 找回密码
 加入黑马

QQ登录

只需一步,快速开始

代码如下:新人报道 请多指教(有分就好了)
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("关闭失败");
    }
   }
  }
}
}

0 个回复

您需要登录后才可以回帖 登录 | 加入黑马