晚上在做一道作业题,要求输出一个目录下 创建日期晚于 2010-1-1 的所有文件的文件名我想问问 能不能用 过滤器 FileFileter 来实现,如果可以的话还请指教下。谢谢了!

解决方案 »

  1.   

    Java 中的 File 无法获得文件的创建时间,只有最后修改时间。
      

  2.   


    import java.io.File;
    import java.text.ParseException;
    import java.text.SimpleDateFormat;
    import java.util.Date;
    public class FileList {

    public static Date date;

    static {
    try {
    date = new SimpleDateFormat("yyyy-MM-dd").parse("2010-11-01");
    } catch (ParseException e) {
    e.printStackTrace();
    }
    }

    public static void main(String[] args) {
    File file = new File("d:\\java");
    fileList(file);
    }

    public static void fileList(File f) {
    if(f.isDirectory()) {
    File[] files = f.listFiles();
    for(int i=0; i<files.length; i++) {
    fileList(files[i]);
    }
    } else {
    if(f.lastModified() > date.getTime()) {
    System.out.println(f.getName());
    }
    }
    }
    }
      

  3.   


    import java.io.File;
    import java.io.FileFilter;
    import java.text.ParseException;
    import java.text.SimpleDateFormat;
    public class TestFileFilter {
    public static void main(String args[]){
    filter("c:\\");
    }

    public static void filter(String path){
    File file = new File(path);
    File[] list = file.listFiles(new Filter());
    for(File filefilter : list){
    if(filefilter.isDirectory())
    filter(filefilter.getAbsolutePath());
    if(filefilter.getName().indexOf(".") != -1)
    System.out.println(filefilter.getName());
    }
    }
    }class Filter implements FileFilter{
    public boolean accept(File pathname) {
    try {
    if(pathname.lastModified() < new SimpleDateFormat("yyyy-MM-dd").parse("2010-11-23").getTime()){
    return false;
    }
    } catch (ParseException e) {
    e.printStackTrace();
    return false;
    }
    return true;
    }

    }
      

  4.   

    哦,那就是继承FileFilter类,在实现accept方法的时候,取得文件的修改时间,跟那个比给出的时间比!
      

  5.   

    感谢各位了,我自己也弄了个,发出来大家看看,给点意见,晚会结贴 谢谢。Java code//zuoye2.java//命题:显示一个目录中的文件/子文件夹中所有 2010-10-1 以后修改过得文件/子文件夹,要求使用过滤器完成。import java.util.Calendar;
    import java.io.File;
    import java.io.FileFilter;
    import java.io.IOException;public class zuoye2
    {
    public static void main(String[] agrs)throws Exception
    {
    File dir = new File("/home/guser/java-study"); //文件夹路径(这个是绝对路径,我用的linux。)
    GuoLv gl = new GuoLv(); //定义过滤器
    File fs[] = dir.listFiles(gl);
    display(fs); //调用 display 方法按要求显示内容
    }
    public static void display(File[] fs) //定义显示方法
    {
    for(int i=0;i<fs.length;i++)
    {
    if(fs[i].isDirectory())
    {System.out.println("这是个目录:" + fs[i]);}
    else
    {System.out.println("这是个文件:" + fs[i]);}
    }
    }
    }class GuoLv implements FileFilter //定义文件过滤器
    {
    public boolean accept(File path) //重载 accept 函数,定义自己的过滤规则
    {
    Long d =path.lastModified(); //返回文件的最后修改时间(long 毫秒数)
    Calendar c = Calendar.getInstance(); //创建日历对象 c 并用当前时间初始化
    c.setTimeInMillis(d); //将日历对象 c 的时间设置为文件最后修改时间
    Calendar c2 = Calendar.getInstance(); //创建日历对象 c2 并用当前时间初始化
    c2.set(2010,12,1); //将日历对象 c2 设置为“门槛“时间
    return c.after(c2); //返回两个时间相比较的结果
    }
    }
      

  6.   

    还有 怎么在 code 中发代码啊?