怎样在Java里取得满足条件的文件列表

来源:互联网 发布:网络协议的基本概念 编辑:程序博客网 时间:2024/06/05 20:10
Java通过File.listFiles/list方法来列出目录下的文件列表。下面介绍File.listFiles方法的用法。File.list的用法也基本一样。
File.listFiles方法有三种形式,
public File [] listFiles()
无参数的listFiles将返回所有文件,包括子文件与子目录。
public File [] listFiles(java.io.FilenameFilter)
java.io.FilenameFilter:文件名过滤器接口。过滤器必须实现此接口。该接口定义了一个
public boolean accept(File file, String filename)方法,第一个参数File file为正在被过滤的文件,第二个参数为正在被过滤的文件名。FilenameFilter.accept返回false的文件会被过滤掉。
该方法返回匹配FilenameFilter所指定条件的文件
public File [] listFiles(java.io.FileFilter)
public boolean accept(File file)方法,第一个参数File file为正在被过滤的文件。FileFilter.accept返回false的文件会被过滤掉。
该方法返回匹配FileFilter所指定条件的文件。
下面我们通过举例说明后2个方法的用法。
取得指定扩展名的文件列表:
    public static FilenameFilter getFileExtensionFilter(String extension) {  
  1.         final String _extension = extension;  
  2.         return new FilenameFilter() {  
  3.             public boolean accept(File file, String name) {  
  4.                 boolean ret = name.endsWith(_extension);   
  5.                 return ret;  
  6.             }  
  7.         };  
  8.     }  
  9.   
  10.     File file = new File("c:\\");  
  11.     File[] zipFiles = file.listFiles(getFileExtensionFilter(".zip"));  
    public static FilenameFilter getFileExtensionFilter(String extension) {          final String _extension = extension;          return new FilenameFilter() {              public boolean accept(File file, String name) {                  boolean ret = name.endsWith(_extension);                   return ret;              }          };      }        File file = new File("c:\\");      File[] zipFiles = file.listFiles(getFileExtensionFilter(".zip"));

取得文件名满足所指定的规则表达式的文件列表
    public static FilenameFilter getFileRegexFilter(String regex) {  
  1.         final String regex_ = regex;  
  2.         return new FilenameFilter() {  
  3.             public boolean accept(File file, String name) {  
  4.                 boolean ret = name.matches(regex_);   
  5.                 return ret;  
  6.             }  
  7.         };  
  8.     }  
  9.   
  10.     File file = new File("c:\\");  
  11.     //取得文件名为8个数字,扩展名为.html的文件  
  12.     File[] numberHtmlFiles = file.listFiles(getFileRegexFilter("[0-9]{8}\\.html"));  
    public static FilenameFilter getFileRegexFilter(String regex) {          final String regex_ = regex;          return new FilenameFilter() {              public boolean accept(File file, String name) {                  boolean ret = name.matches(regex_);                   return ret;              }          };      }        File file = new File("c:\\");      //取得文件名为8个数字,扩展名为.html的文件      File[] numberHtmlFiles = file.listFiles(getFileRegexFilter("[0-9]{8}\\.html"));

取得非目录的文件列表:
    public static FileFilter getNotDirFileFilter() {  
  1.         return new FileFilter() {  
  2.             public boolean accept(File file) {  
  3.                 return file.isFile();  
  4.             }  
  5.         };  
  6.     }  
  7.   
  8.     File file = new File("c:\\");  
  9.     File[] notDirFiles = file.listFiles(getNotDirFileFilter());