黑马程序员技术交流社区

标题: File问题二 [打印本页]

作者: haha_hyq    时间: 2012-9-19 23:40
标题: File问题二
本帖最后由 屈俊材 于 2012-9-24 22:29 编辑

将指定目录下的所有的java文件的绝对路径存储到一个文本文件总,包含子目录中的java文件
作者: 何小红    时间: 2012-9-19 23:42
public class RemoveDirectoryTest {

        /**
         * @param args
         * 需求:删除一个带内容的目录
         * 思路:
         * 1, 删除完文件夹原理是:必须是从里往外删除,必须保证该文件夹为空,该文件夹才可以被删除
         * 2, 它里面到底有多少级层级目录,是不清楚的,所以必须用到递归
         */
        public static void main(String[] args) {
                //封装目录
                File dir = new File("D:\\abc");
               
                //调用自定义方法removeDir
                 removeDir(dir);
        }

        public static void removeDir(File dir) {
                //1. 列出指定目录下的所以文件对象
                File[] files = dir.listFiles();

                //2. 遍历该数组中所有文件对象,并对其进行判断
                for(File file : files){
                        //对file对象进行继续判断,如果是文件夹,继续调用该方法,继续判断
                        if(file.isDirectory()){//如果是目录继续绩效判断
                                removeDir(file);//递归调用removeDir方法
                        }else{
                                System.out.println(file.toString()+"    :"+file.delete());//调用File的delete方法删除文件
                        }
                }
                System.out.println(dir.toString()+"    :"+dir.delete());//delete方法可以删除文件或文件夹       
        }
}

哈鼎  23:41:50
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 JavaFileListTest {

        /**
         * @param args
         * 需求:将制定目录下的所有的java文件的绝对路径存储到一个文本文件总,包含子目录中的java文件
         * 思路:
         * 1,题意:建立制定类型的文件的清单列表,方便对该类型文件的查找。
         * 2,应该对制定目录进行递归遍历,获取到所有制定类型文件的对象
         * 3,将文件对象中的绝对路径写入到一个文本文件中。
         *
         * 步骤:
         * 1, 定义一个方法进行递归,递归过程中,需要对递归的文件进行判断,满足条件的对象记性存储。
         *     1.1必须先定义一个过滤器。是一个文件过滤器,或者是一个文件名称过滤器。FileFilter FilenameFilter
         *     2.2一旦满足过滤条件,定义一个集合进行文件对象的存储。ArrayList
         * 2,对存储的文件对象的集合进行迭代,定义输出流将文件对象总的信息写入到一个文件中。
         * @throws IOException
         */
        public static void main(String[] args) throws IOException {
                //将制定的目录封装成对象
                File dir = new File("E:\\Java基础班");
                //定义过滤器
                FileFilter filter = new FileFilter(){//FileFilter 是一个抽象类

                        @Override
                        public boolean accept(File pathname) { //accept是个抽象方法需要自己覆写
                                return pathname.getName().endsWith(".java");
                                //File的方法:String getName()  返回由此抽象路径名表示的文件或目录的名称 。
                                // boolean endsWith(String suffix)   测试此字符串是否以指定的后缀结束
                        }
                };
                List<File> list = new ArrayList<File>();
                getFileList(dir,filter,list);
               
                File dest = new File(dir,"javalist.txt");
                wite2File(list,dest);

        }
        /**
         * 将集合中的file对象的信息写入到目标文件夹中。
         * @param list
         * @param dest
         * @throws IOException
         */

        public static void wite2File(List<File> list, File dest) throws IOException {
                //创建流对象
                BufferedWriter bufw = null;
                try{
                        bufw=new BufferedWriter(new FileWriter(dest));
                        //迭代集合
                        for(File file : list){
                                bufw.write(file.getAbsolutePath());
                                bufw.newLine();
                                bufw.flush();
                        }
                        }finally{
                                if(bufw!=null)
                                        try {
                                                bufw.close();
                                        } catch (Exception e) {
                                                e.printStackTrace();
                                        }
                        }
               
        }
        /**
         * 对指定目录进行递归,将符合filter过滤条件的的file对象存储到集合中。
         *
         */
        public static void getFileList(File dir, FileFilter filter, List<File> list) {
                File[] files = dir.listFiles();
                if(files!=null){
                        for(File file : files){
                                if(file.isDirectory()){
                                        getFileList(file,filter,list);
                                }else{
                                        if(filter.accept(file));{
                                                list.add(file);
                                        }
                                }
                        }
                }
        }

}
作者: 赵永康    时间: 2012-9-19 23:54
//创建制定目录中的.java文件到制定文件中
import java.io.*;
import java.util.*;
class  FileList
{
        public static void main(String[] args)throws IOException
        {
                File dir=new File("E:\\java总结");
                List<File> list=new ArrayList<File>();
                writeToList(dir,list);
                File file=new File(dir,"FileList.java");
                writeToFile(list,file.toString());
        }
        public static void writeToList(File dir,List<File> list)//将目录存到集合中
        {
                File[] files = dir.listFiles();
                for(File file:files)
                {
                        if(file.isDirectory())
                               
                                writeToList(file, list);
                        else
                        {
                                if(file.getName().endsWith(".java"))
                                        list.add(file);
                        }
                }
        }
        public static void writeToFile(List<File> list,String name)throws IOException
        //将集合中的元素存诸到文件中
        {
                BufferedWriter bufw=new BufferedWriter(new FileWriter(name));
                for(File files:list)
                {
                        String path=files.getAbsolutePath();
                        bufw.write(path);
                        bufw.newLine();bufw.flush();
                }
        }
}




欢迎光临 黑马程序员技术交流社区 (http://bbs.itheima.com/) 黑马程序员IT技术论坛 X3.2