代码如下:
- package cn.itcast.io.file.getlist;
- //import java.awt.List;
- import java.io.BufferedWriter;
- import java.io.File;
- import java.io.FileFilter;
- import java.io.FileWriter;
- import java.io.IOException;
- import java.util.ArrayList;
- import java.util.List;
- public class GetCertainListDemo {
- public static void main(String[] args) {
- // TODO Auto-generated method stub
- /**
- * 联系:将指定目录中的所有java文件(包含子目录)的绝对路径写入到指定的java文件中 思路: 1、对指定的目录进行遍历,包含子目录的边路
- * 2、在遍历中加入过滤器 3、将满足过滤器的文件进行临时存储 4、将存储的数据的指定的信息,比如绝对路径写入到指定文件中去
- */
- File dir = new File("F:\\教学视频\\Java\\Java基础班_2013年4月\\day11_avi");
- // 创建一个文件过滤器,可以过滤指定后缀名的文件
- FileFilter filter = new FileFilterBySuffix(".avi");
- // 创建一个集合,用于存储符合过滤条件的文件
- List<File> list = new ArrayList<File>();
- // 定义一个方法,用于对指定的目录进行遍历,并传入指定的过滤器和临时容器
- listAllFiles(dir, filter, list);
- System.out.println(list.size());
- // 1、创建一个用于存储java文件路径的文件
- File file = new File(dir, "avi.txt");
- writeToFile(list, file);
- }
- /**
- * 将list中存储的File对象的指定的信息写入到文件中
- * @param list
- * @param file
- * @throws IOException
- */
- private static void writeToFile(List<File> list, File file) {
- // TODO Auto-generated method stub
- BufferedWriter bufw = null;
- try {
- // 1、既然要将文本数据写入到一个文件中,就需要使用io技术
- bufw = new BufferedWriter(new FileWriter(file, true));
- // 1、对list集合进行遍历
- for (File f : list) {
- bufw.write(f.getAbsolutePath());
- bufw.newLine();
- bufw.flush();
- }
- } catch (IOException e) {
- // TODO: handle exception
- e.printStackTrace();
- } finally {
- if (bufw != null) {
- try {
- bufw.close();
- } catch (Exception e2) {
- // TODO: handle exception
- throw new RuntimeException("关闭");
- }
- }
- }
- }
- /**
- * 在遍历之后,将满足条件的file存储到临时容器中
- *
- * @param dir
- * @param filter
- * @param list
- */
- private static void listAllFiles(File dir, FileFilter filter,
- List<File> list) {
- // TODO Auto-generated method stub
- // 对指定的目录进行遍历
- File[] files = dir.listFiles();
- for (File file : files) {
- // 如果是目录,进行递归
- if (file.isDirectory()) {
- listAllFiles(dir, filter, list);
- } else {
- // 如果是文件,就将文件传递给过滤器进行过滤
- if (filter.accept(file)) {
- list.add(file);
- }
- }
- }
- }
- }
复制代码 运行的时候出现内存溢出,是怎么回事呢? |