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

 找回密码
 加入黑马

QQ登录

只需一步,快速开始

该问题之前发错地方,一直未见有人回复,再发一次,还望版主见谅!
/*
需求:利用递归算法,将指定目录中的指定类型文件路径存储到一个指定文件中
思路:
1、要在指定目录下查找相应类型的文件,利用递归算法遍历该目录
2、将遍历过程中符合要求的文件存储到一个集合中
3、利用输出流将集合中文件的绝对路径打印到指定的文件中
*/
import java.io.*;
import java.util.*;
class FileDemo
{
        public static void main(String[] args)
        {
                //创建一个文件对象关联指定目录
                File dir=new File("D:");
                //创建一个集合,存储文件类型的对象
                List<File> list=new ArrayList<File>();
               
                fileToList(dir,list);
                //创建一个文件对象,关联指定的文件名
                File file=new File(dir,"java文件列表.txt");
       
                writeToFile(list,file.toString());
               

        }
        //遍历目录,将指定文件存入到参数集合中
        public static void fileToList(File dir,List<File> list){
                //利用File类的listFiles()方法,将目录中的文件存储到一个File数组中
                File[] files=dir.listFiles();
                //利用递归算法,遍历目录中的文件,如果遍历到的目录是以.java文件结尾,将该问价添加到集合中
                for(File file:files){
                        if(file.isDirectory())
                                fileToList(file,list);
                        else{
                                if(file.getName().endsWith(".java"))
                                        list.add(file);
                        }
                }
        }
        //创建文件写入输出流,将集合内文件的据对路径储到指定文件
        public static void writeToFile(List<File> list,String javaListFile){
                BufferedWriter bw=null;
                try{
                        bw=new BufferedWriter(new FileWriter(javaListFile));
                        for(File file:list){
                                //将file的绝对路径赋值给String变量path
                                String path=file.getAbsolutePath();
                                bw.write(path);
                                bw.newLine();
                                bw.flush();
                        }
                }
                catch(IOException e){
                                throw new RuntimeException("写入文件失败");
                }
                finally{
                                try{
                                        if(bw!=null)
                                                bw.close();
                                }
                                catch(IOException ex){
                                        throw new RuntimeException("流文件不存在");
                                }
                }
        }
       
}

1 个回复

倒序浏览
import java.io.*;
class FileDemo
{
        public static void main(String[] args)
        {
                File dir = new File("H:\\");
                listFile(dir);
        }
        public static void listFile(File file)
        {
                System.out.println(file);
                File[] listfile = file.listFiles();
                for (int i = 0; i < listfile.length; i++)
                {
                        if(! (listfile[i].isHidden()) && listfile[i].isDirectory())
                                listFile(listfile[i]);
                        else
                                System.out.println(listfile[i]);                                       
                }       
        }
}
我这个是打印输出指定目录下的所有文件
回复 使用道具 举报
您需要登录后才可以回帖 登录 | 加入黑马