public File[] listFiles(FilenameFilter filter)
这个方法怎么用?
怎么实现FilenameFilter 借口?
boolean accept(File dir,String name)方法体怎么写?
麻烦举个例子说明下
例如怎么列出d:\\temp下的所有.java文件

解决方案 »

  1.   

    import java.io.*;
    class FileTest{
    public FileTest(){
    File file = new File(".");//当前目录
    MyFilter filter = new MyFilter();
    File[] files = file.listFiles( filter );
    for( File f : files )
    System.out.println( f.getName() );
    }
    public static void main( String[] args ){
    new FileTest();
    }
    class MyFilter implements FilenameFilter{
    public boolean accept(File dir,String fileName){
    if( fileName.endsWith(".java") )
    return true;
    return false;
    }
    }
    }
      

  2.   

    import java.io.*;public class FileTest {
    public static void main(String[] args) {
    File parent = new File("/home/wenwen/program/java/");
    File[] files = parent.listFiles(new JavaFileFilter());
    for (File file : files) {
    System.out.println(file.getName());
    }
    }
    }class JavaFileFilter implements FileFilter {
    public boolean accept(File file) {
    if (file.isDirectory() || !file.exists())
    return false;
    String fileName = file.getName();
    if (fileName.endsWith(".java"))
    return true;
    return false;
    }
    }随便写了个,楼主看看符不符合你的要求
    java.io包中还有个FilenameFilter接口,是专门用来对文件名进行过滤的,你可以实现它,然后传给
    File.list(FilenameFilter filter)方法,它将返回String[]
      

  3.   

    package org.luyang.io;import java.io.BufferedOutputStream;
    import java.io.BufferedReader;
    import java.io.DataOutputStream;
    import java.io.File;
    import java.io.FileOutputStream;
    import java.io.FileReader;
    import java.io.StringReader;
    import java.net.URI;import org.luyang.lang.RegularExpressions;public class FilePathRead {
        public static void main(String[] args){
            FilePathRead t = new FilePathRead();
            t.find(new File("C:\\j2sdk1.4.2_10"));
        }
        
        public void find(File f){
            if(f.isDirectory()){
                File[] fileList = f.listFiles();
                for(int i = 0; i < fileList.length; i++){
                    find(fileList[i]);
                }
            }else{
               if(f.getName().endWith(".java"))
                    System.out.println(f.getAbsolutePath());
            }
        }
      

  4.   

    ls几个兄弟的算法似乎只能寻找当前目录下面的java文件,但是对子目录似乎没有搞搞啊。不过这个sample还是不错的
      

  5.   

    很简单,在这个基础上,利用递归就可以了,看我这篇文章:http://blog.csdn.net/nicky_hk/archive/2006/12/08/1435231.aspx