黑马程序员技术交流社区

标题: 将一个指定目录下的java文件的绝对路径 存储到一个文本... [打印本页]

作者: 思如涌泉    时间: 2014-8-26 09:07
标题: 将一个指定目录下的java文件的绝对路径 存储到一个文本...
/*
练习
将一个指定目录下的java文件的绝对路径  存储到一个文本文件中
建立一个java文件列表文件  即是java文件的列表清单


思路:
1 对指定的目录进行递归
2 获取递归过程中所有的java文件的路径
3 将这些路径存储到集合中,可以多项操作,写或者打印
4 将集合中的数据写入到一个文件中
*/
import java.io.*;
import java.util.*;
class JavaFileList
{
        public static void main(String[] args) throws IOException
        {
                File dir = new File("d:\\java1223");

                List<File> list = new ArrayList<File>();

                fileToList(dir,list);//传入目录 和集合

                //System.out.println(list.size());//打印集合长度
               
                                                        //目录 , 文件名
                File file = new File(dir,"javalist.txt");//在dir目录下创建javalist.txt文件
                writeToFile(list,file.toString());//file.toString() 返回javalist.txt的
               
        }

        public static void fileToList(File dir,List<File> list)//将文件存到集合当中
        {
                File[] files = dir.listFiles();

                for(File file : files)//遍历数组
                {
                        if(file.isDirectory)
                                fileToList(file,list);//递归,如果是目录就递归
                        else
                        {
                                if(file.getName().endsWith(".java"))//判断获取名字的扩展名
                                        list.add(file);//添加.java文件到集合list中路径名字符串
                        }
                }
        }



        public static void writeToFile(List<File> list,String javaListFile)throws IOException//将集合的数据操作到文件中--目的
        {
                BufferedWriter bufw = null;//操作文件BufferedWriter
                try
                {
                        bufw = new BufferedWriter(new FileWriter(javaListFile));

                        for(File f : list)
                        {
                                String path = f.getAbsolutePath();//获取文件绝对路径
                                bufw.write(path);
                                bufw.newLine();
                                bufw.flush();
                       
                        }
                }
                catch (IOException e)
                {
                        throw e;//没处理 也要抛出IOException异常

                }
                finally
                {
                        try
                        {
                                if(bufw!=null)
                                        bufw.close();
                        }
                        catch (IOException e)
                        {
                                throw e;
                        }
                }
        }
}


作者: zuochbd    时间: 2014-8-26 10:02
thinking in java的IO一章开头就有一个这种差不多的例子. 可参考.
(thinking in java确实是一本很好的书, 很有启发.)
不过, 其判断文件名的方式采用正则表达式, 而实际上我们用String类的endup方法就可以进行判断了.




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