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

© 湛添友 中级黑马   /  2014-4-21 01:09  /  914 人查看  /  3 人回复  /   0 人收藏 转载请遵从CC协议 禁止商业使用本文

package iofile;

import java.io.BufferedWriter;
import java.io.File;
import java.io.FileWriter;
import java.io.IOException;
import java.util.*;

//将制定目录下的java文件的绝对路径 存储到一个文件中 建立java文件列表
/*
* 思路 首先确定一个 文件夹  需要用到递归 获取所有java文件的对象
*   存储进集合
* 把路径信息 通过输出流存储到一个文件中去
*
* 输出流 是纯文本 Writer 设备 硬盘上的一个文件 FileWriter
*
*
*
*
*
*/
public class JavaFileList
{
        public static void main(String args[]) throws IOException
        {
                File dir=new File("D:\\Workspace");//建立路径对象
                shuRu(dir);//调用写入功能
               
        }
        public static void getJavaInf(File dir,List<File> list) throws IOException//获取所有java文件对象
        {
                File[] files=dir.listFiles();
                for(int x=0;x<files.length;x++)
                {
                        if(files[x].isDirectory())
                                getJavaInf(files[x],list);
                       
                        else
                                if(files[x].getName().endsWith(".java"))
                                        list.add(files[x]);
                       
                }
               
               
               
               
        }
       
        public static void shuRu(File dir) throws IOException
        {
                List<File> list=new ArrayList<File>();//存储java File对象的集合
                Collections.sort(list,new MyComp()); // 排序        为什么这个排序没有用???
                getJavaInf(dir,list);
                BufferedWriter bw=new BufferedWriter(new FileWriter("D:\\java.txt"));//建立一个文件 存储信息
               

                for(File f:list)//高级for 遍历
                {
                        bw.write(f.getName()+"::"+f.getAbsolutePath());//写入信息
                        bw.newLine();//换行
                        bw.flush();//刷新
                }
               
               
               
                bw.close();
        }
}
class MyComp implements Comparator<File>//排序比较器
{
       
        public int compare(File f1,File f2)
        {
                return f1.getName().compareTo(f2.getName());//根据文件名字进行排序
        }
       
       
       
       
}

评分

参与人数 1技术分 +1 收起 理由
ily521125 + 1

查看全部评分

3 个回复

倒序浏览
好像是排序的位置错了,list里没有东西就进行排序了,下面两句掉换一下.

                 Collections.sort(list,new MyComp()); // 排序        为什么这个排序没有用???
                 getJavaInf(dir,list);
回复 使用道具 举报
湛添友 来自手机 中级黑马 2014-4-21 08:26:07
藤椅
哈哈,是啊,真是糊涂
回复 使用道具 举报
   List<File> list=new ArrayList<File>(加入比较器的对象);//存储java File对象的集合
                Collections.sort(list,new MyComp()); // 排序        为什么这个排序没有用???
集合中排序要用比较器,所以你新建一个比较器类,然后把这个类的对象当成参数传递给集合中当场构成集合中构造函数的的实际参数
回复 使用道具 举报
您需要登录后才可以回帖 登录 | 加入黑马