Java IO 之 FileFilter與FilenameFilter

來源:互聯網
上載者:User

標籤:

FileFilter與FilenameFilter可以實現對檔案的過濾,他們都是介面,具體的過濾規則需要我們自己編寫

1、FileFilter

 1 package org.zln.io.file; 2  3 import java.io.File; 4 import java.io.FileFilter; 5  6 /** 7  * 拓展名過濾器 只返回指定拓展名的檔案 8  * Created by coolkid on 2015/6/21 0021. 9  */10 public class ExtensionFilter implements FileFilter{11 12     //拓展名13     private String extension;14 15     public ExtensionFilter(String extension) {16         this.extension = extension;17     }18 19     @Override20     public boolean accept(File file) {21         boolean result = false;22 23         if (file.isDirectory()){//目錄 過濾掉24             result = false;25         }else {26             String fileName = file.getName();//檔案名稱  不是全路徑27             int index = fileName.lastIndexOf(".");28             if (index == -1){29                 result = false;30             }else if (index == fileName.length()-1){31                 result = false;32             }else {33                 if (this.extension.equalsIgnoreCase(fileName.substring(index+1))){34                     result = true;35                 }36             }37         }38         return result;39     }40 }
E:\GitHub\tools\JavaEEDevelop\Lesson1_JavaSe_Demo1\src\org\zln\io\file\ExtensionFilter.java

測試代碼

1         File file = new File("E:\\GitHub\\tools");2         File[] files = file.listFiles(new ExtensionFilter("bat"));3         for (File file1:files){4             System.out.println(file1.getAbsolutePath());5         }

只有拓展名為 bat的檔案才會被過濾出來,其他副檔名的檔案以及檔案夾不會被listFiles出來

在此時的邏輯上,我們是根據拓展名來過濾的,當然,如果實際需要,我們也可以根據檔案的其他屬性進行過濾

2、FilenameFilter

 1 package org.zln.io.file; 2  3 import java.io.File; 4 import java.io.FilenameFilter; 5  6 /** 7  * 圖片過濾器 8  * Created by coolkid on 2015/6/21 0021. 9  */10 public class ImageFilter implements FilenameFilter {11 12     public boolean isGif(String filename){13         if (filename.toLowerCase().endsWith(".gif")){14             return true;15         }else {16             return false;17         }18     }19 20     public boolean isJpg(String filename){21         if (filename.toLowerCase().endsWith(".jpg")){22             return true;23         }else {24             return false;25         }26     }27 28     public boolean isPng(String filename){29         if (filename.toLowerCase().endsWith(".png")){30             return true;31         }else {32             return false;33         }34     }35 36 37     @Override38     public boolean accept(File dir, String name) {39         System.out.println("DIR:"+dir.getAbsolutePath());40         return isGif(name)||isJpg(name)||isPng(name);41     }42 }
E:\GitHub\tools\JavaEEDevelop\Lesson1_JavaSe_Demo1\src\org\zln\io\file\ImageFilter.java

通常使用 FilenameFilter 對檔案進行過濾

Java IO 之 FileFilter與FilenameFilter

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.