1. 程式人生 > >FileFilter和FilenameFilter類效能比較(zz)

FileFilter和FilenameFilter類效能比較(zz)

FileFilter和FilenameFilter 兩個介面是在檔案搜尋中常用的,有什麼區別? 

下面通過一個測試程式來初步檢驗兩個介面的效能。

    方法:在一個目錄中建立20000 個txt 檔案,分別用實現了以上兩個介面的類來搜尋這個目錄中的所有txt 檔案,檢視時間。

    結果:FilenameFilter效能好於FileFilter。



 

   首先是個工具類:niTimer.java

Java程式碼  收藏程式碼
  1. package cn.nileader.io;  
  2. /** 
  3.  *  @author nileader
     
  4.  * @see http://www.nileader.cn 
  5.  */  
  6. class niTimer {    
  7.      /*  
  8.       * 構造方法  
  9.       */    
  10.      public niTimer() {    
  11.          this.reSet();    
  12.     }    
  13.      /*  
  14.       * 開始計時  
  15.       */    
  16.      public void start() {    
  17.           this.isRunning = true;    
  18.           this.startTime = System.currentTimeMillis();    
  19.       }    
  20.       /*  
  21.        * 停止計時  
  22.        */    
  23.       public void end() {    
  24.           this.isRunning = false;    
  25.           long endTime = System.currentTimeMillis();    
  26.           this.useTime = endTime - this.startTime;    
  27.       }    
  28.       /*  
  29.        * 初始化 使this.useTime = 0;  
  30.        */
        
  31.       public void reSet() {    
  32.           this.useTime = 0;    
  33.           this.isRunning = false;    
  34.       }    
  35.       /*  
  36.        * 過去所用時間  
  37.        */    
  38.       public long getUseTime() {    
  39.                return useTime;    
  40.       }    
  41.       private long startTime;    
  42.       private long useTime;    
  43.       private boolean isRunning;    
  44.       public long getStartTime() {    
  45.           return startTime;    
  46.       }    
  47.       public void setStartTime(long startTime) {    
  48.           this.startTime = startTime;    
  49.       }    
  50.       public void setUseTime(long useTime) {    
  51.           this.useTime = useTime;    
  52.       }    
  53.   }    

  分別是兩個實現了 FileFilter和FilenameFilter介面的類

     niFileFilter.java

Java程式碼  收藏程式碼
  1. <strong>package cn.nileader.io;  
  2. import java.io.File;  
  3. import java.io.FileFilter;  
  4. /** 
  5.  * 繼承FileFilter介面的檔案檢索類 
  6.  * @author nileader 
  7.  * @see http://www.nileader.cn 
  8.  */  
  9. class niFileFilter  implements FileFilter{  
  10.     public String  dat;     //定義的副檔名  
  11.     public String getDat() {  
  12.         return dat;  
  13.     }  
  14.     public void setDat(String dat) {  
  15.         this.dat = dat;  
  16.     }  
  17.     /** 
  18.      * 構造方法 
  19.      */  
  20.     public niFileFilter(String dat){  
  21.         this.setDat(dat);  
  22.     }  
  23.     /** 
  24.      * 過濾的方法 
  25.      * @param file 待查詢的檔案物件 
  26.      * @return 是否符合指定檔案 
  27.      */  
  28.     public boolean accept(File file) {  
  29.                 //如果file是個目錄  
  30.               if(file.isDirectory()) return false;  
  31.                 String fileName = file.getName();  
  32.                 //對獲取的檔案全名進行拆分  
  33.                 String[] arrName = fileName.split("\\.");  
  34.                 if(arrName[1].equalsIgnoreCase( this.getDat() ) )  
  35.                 {  
  36.                     return true;  
  37.                 }  
  38.         return false;  
  39.     }  
  40. }</strong>  

niFilenameFilter.java

Java程式碼  收藏程式碼
  1. <strong>package cn.nileader.io;  
  2. import java.io.File;  
  3. import java.io.FilenameFilter;  
  4. /** 
  5.  * 繼承FileFilter介面的檔案檢索類 
  6.  * @author nileader 
  7.  * @see http://www.nileader.cn 
  8.  */  
  9. class niFilenameFilter  implements FilenameFilter{  
  10.     public String  dat;     //定義的副檔名  
  11.     public String getDat() {  
  12.         return dat;  
  13.     }  
  14.     public void setDat(String dat) {  
  15.         this.dat = dat;  
  16.     }  
  17.     /** 
  18.      * 構造方法 
  19.      */  
  20.     public niFilenameFilter(String dat){  
  21.         this.setDat(dat);  
  22.     }  
  23.     /** 
  24.      * 過濾的方法 
  25.      * @param file 待查詢的檔案物件 
  26.      * @return 是否符合指定檔案 
  27.      */  
  28.     public boolean accept(File dir, String fileName) {  
  29.         //對獲取的檔案全名進行拆分  
  30.         String[] arrName = fileName.split("\\.");  
  31.         if(arrName[1].equalsIgnoreCase( this.getDat() ) )  
  32.         {  
  33.             return true;  
  34.         }  
  35. 相關推薦

    FileFilterFilenameFilter效能比較zz

    FileFilter和FilenameFilter 兩個介面是在檔案搜尋中常用的,有什麼區別?  下面通過一個測試程式來初步檢驗兩個介面的效能。     方法:在一個目錄中建立20000 個txt 檔案,分別用實現了以上兩個介面的類來搜尋這個目錄中的所有txt 檔案,檢視時間。

    EmacsVim:神的編輯器編輯器之神ZZ

    0. 序章:神器的傳說 在這個蔚藍色的星球上,流傳著兩大神器的傳說:據說Emacs是神的編輯器,而Vim是編輯器之神。 追求獨步天下的高手和低手們爭著一睹它們的風采,可看到它們樸素單薄的介面後,不禁心下懷疑:這就是神器嗎?甚至有人生了輕視之心。 膚淺的人嗤之以鼻,說

    System.Diagnostics名稱空間裡的DebugTrace的用途收藏--使用Trace 做程式日誌

    摘要 在 .NET 類庫中有一個 System.Diagnostics 名稱空間,該名稱空間提供了一些與系統程序、事件日誌、和效能計數器進行互動的類庫。當中包括了兩個對開發人員而言十分有用的類——Debug類和Trace類。本文介紹了這兩個類的一些基本用途,旨在提高廣大開

    用cloudera manager安裝impala全過程以impala、hive、Spark效能比較-cloudera manager 安裝impala成功並對impala、hive進行簡單測試

    Cloudera manager安裝impala除了第一篇文章提到的條件:1.需要安裝centos6.2系統。2.CDH4.1.0以上版本3.要在叢集每個節點安裝hive。4.hive的元資料庫要使用mysql。5.每臺主機hosts檔案中都加入所有機器的IP地址和主機名的

    Java中接口抽象比較

    系列 分享 space 日誌信息 pub 指向 相關 最好的 就會 Java中接口和抽象類的比較-2013年5月寫的讀書筆記摘要 1. 概述 接口(Interface)和抽象類(abstract class)是 Java 語言中支持抽象類的兩種機制,是

    trie樹查找hash查找比較大量數據

    stdlib.h emp lib ras eno strlen oid ack std trie樹代碼 #include<iostream> #include<stdio.h> #include<iostream> #include&l

    C語言中存儲類別又分為四:自動auto、靜態static、寄存器的register外部的extern

    字符變量 修飾 例如 register ext 進行 適合 sta -- 除法運算中註意: 如果相除的兩個數都是整數的話,則結果也為整數,小數部分省略,如8/3 = 2;而兩數中有一個為小數,結果則為小數,如:9.0/2 = 4.500000。 取余運算中註意: 該運算只適

    C++快速入門---this指標的繼承10

    C++快速入門---this指標和類的繼承(10)   this是一個特殊的指標 class Human {    char fishc;    Human(char fishc); } Human::Human(char

    C++快速入門---聯合、列舉型別名7

    C++快速入門---聯合、列舉和類型別名(7)   聯合可以容納多種不同型別的值,但是它每次只能儲存這些值中的某一個。 #include <iostream> union mima { unsigned long birthday; unsigned shor

    手遊客戶端的效能----UnityC#版具體優化--UGUI,資源規範等

    接上篇: 4、Enum:列舉當Key使用或列舉轉換為String,都會有GC 5、閉包:函式和與其相關的引用環境組合成的實體。閉包IL程式碼會出個新類,頻繁呼叫一個函式時,儘量不用。 6、其他       1>update中沒必要每幀的。 &n

    手遊客戶端的效能----UnityC#版之字串拼接,StructClass的區別與應用

    接著上篇文章: 2、字串拼接(簡單,直接結論)        使用“a” + “b”在幾次(10次以內吧)連線是不會產生gc的但是大量連線就會產生;         連線多的用StringBuilder,內部

    手遊客戶端的效能----UnityC#版之Foreach GC

              序:昨天去了南京的湯山紫清湖溫泉,安利一下,價格也不貴(不是打廣告。。。不貼怎麼訂票之類的,有興趣可以評論),還去見了多年未見的老友啊~不出意外的話下篇是手遊客戶端的效能篇(二)----Unity和C#版,想寫優化和效能想寫很久了

    [jvm]五tomcat效能調優效能監控visualvm

    1、JDK記憶體優化 根據伺服器物理內容情況配置相關引數優化tomcat效能。當應用程式需要的記憶體超出堆的最大值時虛擬機器就會提示記憶體溢位,並且導致應用服務崩潰。因此一般建議堆的最大值設定為可用記憶體的最大值的80%。 Tomcat預設可以使用的記憶體為128MB,在較大型的應用專案中,

    基本資料型別包裝的關係以intInteger為例

    public void test(){ int a=10; Integer b=new Integer(10); Integer d= Integer.valueOf(10); Integer e= Integer.valueOf(10); Integer c=10; In

    C++拾趣——STL容器的插入、刪除、遍歷查詢操作效能對比ubuntu g++——遍歷查詢

    遍歷 從前往後 元素個數>15000 traversal_begin_16384_highest         表現最差的是unordered_multiset。其在遍歷到1000個左右的元素時發生較高的延時操作,然後又穩定下來。         除了

    redux、immutablejsmobx效能對比

    四、我的結論  通過第三部分的資料資料分析,我覺得我們可以得到以下結論: 無論是在開發環境還是測試環下頁面的首次載入速度結果都是:redux>immutablejs>mobx,但是他們之間的差距並不是很大。 10000條-100000條資料的頁面載入時間的增量明顯也高於10000-1000條資料

    [C++]的設計2——拷貝控制拷貝控制資源管理

      1、類的行為分類:看起來像一個值;看起來想一個指標。     1)類的行為像一個值,意味著他應該有自己的狀態。當我們拷貝一個像值的物件時,副本和原物件是完全獨立的。改變副本不會對原有物件有任何影響,反之亦然。     

    C#泛型、引用型別、值型別Object的效能比較

    最近在看C#的泛型,據CLR via C# (第4版)上的說明,泛型是最優的。 對此,先秉持著懷疑的心態的看問題,先驗證一下是否如此。 以下在Main()中實現了個示例,例證的思路是:通過多次執行呼叫,統計並比較不同型別呼叫的時間。 static void M

    Java的Date,日期的比較筆記

    import java.text.ParseException;import java.text.SimpleDateFormat;import java.util.Date;/** * 字串轉為日期前形式,直接用程式碼+註釋了 * @author helloX007 */p

    抽象介面的詳解例項

    抽象類和介面在我們的程式碼中,生活中息息相關,與上圖所示,操縱複雜,密切相關,那麼問題來了,何謂抽象類,何謂介面? 帶著這層薄紗,慢慢揭開這層薄紗;也許在古代,新婚之夜,透過這層薄紗,你看到的或者是驚喜,或許是驚悚,不要怕,無論是驚悚還是驚喜,她都會伴你一