File & FilenameFilter

package think.in.java.io;

import java.io.File;
import java.io.FilenameFilter;
import java.util.Arrays;
import java.util.regex.Pattern;

/** 
 * Display a directory listing using regular expressions.
 * {Args: "D.*\.java"}
 * 
@author WPeng
 *
 * 
@since 2012-11-2
 
*/

public class DirList {
    
public static void main(String[] args) {
        File path 
= new File("D:\\Users\\wpeng\\workspace\\Hello\\src\\think\\in\\java\\io");
        String[] list;
        
if(args.length == 0){
            list 
= path.list();
        }
else{
            list 
= path.list(new DirFilter(args[0]));
        }
        Arrays.sort(list, String.CASE_INSENSITIVE_ORDER);
        
for(String dirItem : list){
            System.out.println(dirItem);
        }
    }
}
 
class DirFilter implements FilenameFilter{
     
private Pattern pattern;
     
public DirFilter(String regex){
         pattern 
= Pattern.compile(regex);
     }
    @Override
    
public boolean accept(File dir, String name) {
        
return pattern.matcher(name).matches();
    }
     
 }

package think.in.java.io;

import java.io.File;
import java.io.FilenameFilter;
import java.util.Arrays;
import java.util.regex.Pattern;

/**
 * Uses anonymous inner classes.
 * {Args: "D.*\.java"}
 * 
@author WPeng
 *
 * 
@since 2012-11-2
 
*/
public class DirList2 {
    
public static FilenameFilter filter(final String regex){
        
// Creation of anonymous inner class
        return new FilenameFilter() {
            
private Pattern pattern = Pattern.compile(regex);
            @Override
            
public boolean accept(File dir, String name) {
                
return pattern.matcher(name).matches();
            }
        }; 
// End of anonymous inner class
    }

    
public static void main(String[] args) {
        File path 
= new File("D:\\Users\\wpeng\\workspace\\Hello\\src\\think\\in\\java\\io");
        String[] list;
        
if(args.length == 0){
            list 
= path.list();
        }
else{
            list 
= path.list(filter(args[0]));
        }
        Arrays.sort(list, String.CASE_INSENSITIVE_ORDER);
        
for(String dirItem : list){
            System.out.println(dirItem);
        }
    }

}

package think.in.java.io;

import java.io.File;
import java.io.FilenameFilter;
import java.util.Arrays;
import java.util.regex.Pattern;

/**
 * Building the anonymous inner class "in-place".
 * {Args: "D.*\.java"}
 * 
@author WPeng
 *
 * 
@since 2012-11-2
 
*/

public class DirList3 {

    
public static void main(final String[] args) {
        File path 
= new File("D:\\Users\\wpeng\\workspace\\Hello\\src\\think\\in\\java\\io");
        String[] list;
        
if(args.length == 0){
            list 
= path.list();
        }
else{
            list 
= path.list(new FilenameFilter() {
                
private Pattern pattern = Pattern.compile(args[0]);
                @Override
                
public boolean accept(File dir, String name) {
                    
return pattern.matcher(name).matches();
                }
            });
        }
        Arrays.sort(list, String.CASE_INSENSITIVE_ORDER);
        
for(String dirItem : list){
            System.out.println(dirItem);
        }
    }

}

/** Output:
 * DirList.java
 * DirList2.java
 * DirList3.java
 
*/

posted on 2012-11-02 09:57 盐城小土包 阅读(163) 评论(0)  编辑  收藏 所属分类: J2EE


只有注册用户登录后才能发表评论。


网站导航:
 
<2025年2月>
2627282930311
2345678
9101112131415
16171819202122
2324252627281
2345678

导航

统计

常用链接

留言簿

随笔档案(14)

文章分类(18)

文章档案(18)

搜索

最新评论

阅读排行榜

评论排行榜