`

Java查找文件

阅读更多

1 。------------------------------------------------


package net.mindview.util;

import java.io.File;
import java.io.FilenameFilter;
import java.util.ArrayList;
import java.util.Iterator;
import java.util.List;
import java.util.regex.Pattern;

public final class Directory
{
    
public static File[] local(File dir, final String regex)
    {
        
return dir.listFiles( new FilenameFilter() {
            
private Pattern pattern = Pattern.compile(regex);

            
public boolean accept(File dir, String name)
            {
                
return pattern.matcher( new File(name).getName()).matches();
            }
        });
    }

    
public static File[] local(String path, final String regex)
    {
// Overloaded
         return local( new File(path), regex);
    }

    
// A two-tuple for returning a pair of objects:
     public static class TreeInfo implements Iterable < File >
    {
        
public List < File > files = new ArrayList < File > ();
        
public List < File > dirs = new ArrayList < File > ();

        
// The default iterable element is the file list:
         public Iterator < File > iterator()
        {
            
return files.iterator();
        }

        
void addAll(TreeInfo other)
        {
            files.addAll(other.files);
            dirs.addAll(other.dirs);
        }

 

       public String toString()
        {
                        
// 这里的PPrint.pformat(dirs)是什么意思?是自定义类? 高分求解!;
             return " dirs: " + PPrint.pformat(dirs) + " \n\nfiles: "
                    
+ PPrint.pformat(files);
        }
    }

    
public static TreeInfo walk(String start, String regex)
    {
// Begin recursion
         return recurseDirs( new File(start), regex);
    }

    
public static TreeInfo walk(File start, String regex)
    {
// Overloaded
         return recurseDirs(start, regex);
    }

    
public static TreeInfo walk(File start)
    {
// Everything
         return recurseDirs(start, " .* " );
    }

    
public static TreeInfo walk(String start)
    {
        
return recurseDirs( new File(start), " .* " );
    }

    
static TreeInfo recurseDirs(File startDir, String regex)
    {
        TreeInfo result
= new TreeInfo();
        
for (File item : startDir.listFiles()) {
            
if (item.isDirectory()) {
                result.dirs.add(item);
                result.addAll(recurseDirs(item, regex));
            }
else // Regular file
             if (item.getName().matches(regex))
                result.files.add(item);
        }
        
return result;
    }

    
// Simple validation test:
     public static void main(String[] args)
    {
        
if (args.length == 0 )
            System.out.println(walk(
" . " ));
        
else
            
for (String arg : args)
                Syst
em.out.println(walk(arg));
    }
} // /:

 

 

2.--------------------------------------

 

package com.abt.operator;

import java.io. * ;
import java.util. * ;

public class SeacherThread {
    
public static void main(String args[]) {
        Find f
= new Find();
        Thread thread
= new Thread(f);
        thread.start();
    }
}

class Find implements Runnable {
    
private void getFile(File file[]) {
        
for (File f : file) {
            
if (f.getName().endsWith( " .html " )) {
                System.out.println(f.getName());
            }
            
if (f.isFile())
                
continue ;
            
if (f.isDirectory()) {
                File[] ffile
= f.listFiles( new FilenameFilter() {

                    @Override
                    
public boolean accept(File dir, String name) {
                        
// TODO Auto-generated method stub
                         return true ;
                    }
                });
                getFile(ffile);
            }
        }
    }

    @Override
    
public void run() {
        
// TODO Auto-generated method stub
        File f = new File( " D:/ " );
        File[] file
= f.listFiles( new FilenameFilter() {
            @Override
            
public boolean accept(File dir, String name) {
                
// TODO Auto-generated method stub
                 return true ;
            }
        });
        getFile(file);
    }
}

分享到:
评论

相关推荐

Global site tag (gtag.js) - Google Analytics