Java之FileFilter過濾器的使用與及原理的簡單介紹

2021-01-09 彼岸end

各位小夥伴們大家好,在之前的文章中,小編介紹了「創作開運禮」Java之使用遞歸進行文件搜索,這次小編要介紹的是過濾器,我們可以使用過濾器來遍歷文件夾以及裡面的子文件夾還有相對應的文件。

在File類中有兩個和ListFiles重載的方法,方法的參數傳遞的就是過濾器。

1.File[] listFiles(FileFilter filter)

java.io.FileFilter接口:用於抽象路徑名(File對象)的過濾器。

作用:用來過濾文件(File對象)

抽象方法:用來過濾文件的方法

boolean accept(Filepathname)測試指定抽象路徑名是否應該包含在某個路徑名列表中。

參數:

File pathname:使用listFiles方法遍歷目錄,得到的每一個文件對象。

2.File[] listFiles(FilenameFilter filter)

java.io.FilenameFilter接口:實現此接口的類實例可用於過濾文件名

作用:用於過濾文件名稱

抽象方法:用來過濾文件的方法

boolean accept(File dir,String name)測試指定文件是否應該包含在某一文件列表中。

參數:

File dir:構造方法中傳遞的被遍歷的目錄

String name:使用ListFiles方法遍歷目錄,獲取的每一個文件夾/文件夾的名稱

注意:兩個過濾接口是沒有實現類的,需要我們自己寫實現類,重寫過濾的方法accept,在方法中自己定義過濾的規則。

小編先來將第一種過濾器:File[] listFiles(FileFilter filter)

代碼如下(定義一個實現類):

import java.io.File;

import java.io.FileFilter;

/*創建過濾器FileFilter的實現類,重寫過濾方法accept,定義過濾規則*/

public class FileFilterImpl implements FileFilter {

public boolean accept(File pathname) {

//如果pathname是一個文件夾,返回true,繼續遍歷這個文件夾

/*過濾規則:

在accept方法中,判斷File對象是否以.pkt結尾

是,返回true

不是,返回false/*

if(pathname.isDirectory()) {

return true;

}

return pathname.getName().toLowerCase().endsWith(".pkt");

}

}

main方法

import java.io.File;

public class Demo01Filter {

public static void main(String args[]) {

File file=new File("D:\\programming\\Cisco Packet Tracer");

getAllFile(file);

}

/*定義一個方法,參數傳遞File類型的目錄

方法中對目錄進行遍歷*/

public static void getAllFile(File dir) {

File[] files=dir.listFiles(new FileFilterImpl());//傳遞過濾器對象

for(File f:files) {

//對遍歷得到的File對象f進行判斷,判斷是否是文件夾

if(f.isDirectory()) {

getAllFile(f);

}else {

System.out.println(f);

}

}

}

}

由上面的代碼可以知道,其實過濾器的使用只是根據之前的「創作開運禮」Java之遞歸列印多級目錄上面加上了實現類,之後在傳遞過濾器對象,File[] files=dir.listFiles(new FileFilterImpl());接下來,小編來講一下過濾器的原理。

首先我們需要明白:

過濾器中的accept方法是誰調用的。accept方法中的參數pathname是什麼File[] files=dir.listFiles(new FileFilterImpl());

我們先來說一下listFiles方法,一個做了三件事情:

listFiles方法會對構造方法中傳遞的目錄進行遍歷,獲取目錄中每一個文件或者文件夾-->封裝成File對象。listFiles方法會調用參數,把參數傳遞給過濾器的方法accept3.listFiles方法會把遍歷得到的每一個File對象,傳遞給accept方法的參數pathname。

過濾器原理

關於FileFilter過濾器的使用與及原理,其實簡單一點來講就是listFiles方法調用了accept方法,把遍歷的每一個File對象傳遞給accept方法的參數pathname,其實pathname就是File對象。然後這個實現類會自己定義規則,滿足條件的返回true,傳遞過去的對象會保存到數組中;否則返回false,傳遞過的對象不會保存到數組中,小編就先說到這裡,希望這篇文章可以幫到大家,也歡迎各位小夥伴補充和糾錯。

圖像來自網絡,如有侵權,請聯繫作者刪除

相關焦點

  • 板框過濾器的工作原理和使用特點?
    板框過濾器的工作原理和使用特點?適用於濃度50%以下粘度較低,含渣量較少的液體作密閉過濾以達到提純、澄清等精濾、半精濾的要求,直接選用微孔濾膜,可不經微孔膜過濾器直接達到無菌過濾之目的。
  • java之字符緩衝輸出流,BufferedWriter的簡單介紹
    各位小夥伴們,大家好在之前的文章中小編介紹了字節緩衝流的相關知識,這次小編要介紹的是字符緩衝輸出流,BufferedWriter,具體如下:java.io.BufferedWriter extends Writer
  • java之字符輸出流,FileWriter類的簡單介紹
    各位小夥伴們大家好,在之前的文章中,小編介紹了Java之字符輸入流,Reader類的簡單介紹,它的作用是將硬碟中的數據以字符的方式讀取到內存這次小編要介紹的是字符輸出流,將內存中的數據讀取到硬碟。直接已知子類:BufferedWriter,CharArrayWriter,FilterWriter,OutputStreamWriter,PipedWriter,PrintWriter,StringWriter這次,小編要介紹的是,java.io.FileWriter
  • java之字符緩衝輸入流,BufferedReader的簡單介紹
    各位小夥伴們大家好,在之前的文章中,小編介紹了字符緩衝輸出流java之字符緩衝輸出流,BufferedWriter的簡單介紹,這次小編要介紹的是字符緩衝輸入流,具體如下:java.io.BufferedReader extends Reader繼承自父類的共性成員文件:int read()讀取單個字符並返回int read(char[] cbuf)一次讀取多個字符
  • 魚缸過濾器安裝及使用
    魚缸過濾器的使用方法:1、按水流的方向,過濾系統的濾材的設置順序為:「進水口→(水泵)→物理過濾→化學過濾→生物過濾→(水泵)→出水口」.2、將過濾器放入水族箱內,用吸盤固定在某一側面上。3、確保過濾器安放在適宜的位置。4、需要注意的是,化學過濾中的大部分濾材,如軟水樹脂、草泥丸等,在使用的時候,要配合相應的檢測儀器,才能較好地控制水質,才不至於調節過度,並不適合24小時長期使用。
  • 不鏽鋼Y型過濾器工作原理及注意事項
    Y型過濾器屬於管道粗過濾器系列,可用以過濾氣體和其他介質的大顆粒物質,可安裝在管道上去除流體中的大固體雜質,機械設備(包括壓縮機、泵等),儀表可正常工作,實現穩定工藝,起到安全生產的作用Y型過濾器具有生產簡單、安裝清洗方便、汙染大等優點。
  • java之列印流,printStream的簡單介紹
    各位小夥伴們大家好,在之前的文章中小編介紹了序列化與反序列化的相關知識,這次小編要介紹的是列印流的一些概念還有使用,具體如下:java.io.PrintStream:列印流PrintStream為其他輸出流添加了功能,使它們能夠方便地列印各種數據值和表示形式
  • 長春音樂噴泉設計施工方等-水上噴泉價格產生原理簡單介紹
    長春音樂噴泉設計施工方等-水上噴泉價格產生原理簡單介紹   江蘇水悅景觀噴泉工程有限公司是從事各類水景噴泉設計,生產製造,安裝調試、維修養護為一體的專業性公司。
  • 籃式過濾器工作原理及安裝維護
    籃式過濾器工作原理及安裝維護,目前市面的籃式過濾器越來越受到水處理用戶的青睞,籃式過濾器在各個領域應用都非常廣。那麼籃式過濾器到底如何安裝?安裝好了又如何維護呢?那麼接下來籃式過濾器廠家小編就給大家講述下籃式過濾器的工作原理與安裝維護。
  • Java基礎面試題簡單總結
    中的保留字,現在沒有在java中使用11、數組有沒有length()這個方法?精度不準確,應該用強制類型轉換,如下所示:float f=(float)3.431、介紹JAVA中的Collection FrameWork(包括如何寫自己的數據結構)?
  • Java之File類的構造方法
    各位小夥伴們大家好,在之前的文章中,小編介紹了Java之File類的簡單介紹,File類的靜態成員變量,這次小編要介紹的是File類的構造方法\\code\\a.text");System.out.println(f1);//重寫了Object類的toString方法,列印的是一個路徑:c:\Users\java\code\a.textFile f2=new File("c:\\Users\\java
  • 魚缸過濾器哪種好 魚缸過濾器要一直開著嗎 魚缸過濾器怎麼清洗
    一般的浴缸都是需要安裝過濾器的,那麼魚缸過濾器哪種好?下面就和小編一起來文中詳細了解一下,順便來說說魚缸過濾器要一直開著嗎以及魚缸過濾器怎麼清洗,感興趣的朋友一起來看看吧。一、魚缸過濾器哪種好魚缸過濾器哪種好?魚缸過濾器的種類是多種多樣的,有上部循環過濾、滴流式過濾、背濾及側濾等等,以下是詳細介紹。
  • 常用的水族箱過濾器介紹
    使用水族箱,我們都會安裝水族箱過濾器。其目的是:去除水中糞便等汙物,保持水體清澈、氧氣充足、沒有有害物質、沒有汙染,適合魚的生長。下面就為大家介紹幾種常用的水族箱過濾器。  優點:可充分利用物理式和生化式過濾方法清除水族缸中汙物,增強過濾效果,確保水質清澈。  缺點:瀑流式過濾器,比較適合較方的小缸使用,較長的缸會使水流很亂,不能將沉澱缸底的雜物過濾乾淨。
  • 使用疊片式過濾器前,你需要了解它的安裝
    其中,疊片式過濾器有著過濾效果好、安裝方便、佔地面積小、壽命長等優點,被多用於滴灌系統中。之前,我們已經了解了疊片式過濾器的工作原理了,我們今天就來了解一下疊片式過濾器的安裝,畢竟安裝好了才能使用。下面,河北潤田節水設備就來跟大家好好說說。
  • 原創】Java並發編程系列01|開篇獲獎感言
    1.並發理論:並發編程要解決的三大問題;介紹可見性與有序性問題的根源重排序;學習Java內存模型(JMM),理解JMM如何解決這些問題以實現並發編程的。2.並發關鍵字:深入volatile、synchronized、final關鍵字的作用,都解決了什麼問題,以及其實現原理。
  • 雲南各行業初效過濾器標準
    可拋棄紙框初效過濾器【產品原理】:吸附法【產品用途】:空氣過濾【產品樣式】:紙框【產品性能】:初效過濾【適用對象】:空氣【濾料類型】:無紡布化學纖維布【過濾器類型】:初效過濾網【主體材質】:紙框【應用場所】:過濾器
  • 潷水器 hs 編碼簡單介紹的安裝步驟
    潷水器hs編碼簡單介紹的安裝步驟 ,「13ilo9」   宜興益芳環保設備有限公司專業生產各類格柵除汙機、旋轉潷水器、無軸螺旋輸送機、旋流除砂機、鑄鐵鑲銅閘門、砂水分離器、機械過濾器、淨水器、無閥過濾器、氣浮、三腔式自動加藥裝置、攪拌混合器;各類中心轉動、周邊傳動刮泥機
  • java中為什麼不推薦使用finalize,知道原因後相信你也不會用了
    java提供了一個finalize方法,可以幫助我們進行資源釋放,類似於C++中的析構函數。但是目前普遍的認識是不要使用,為什麼呢?就是因為對java虛擬機的垃圾回收有影響。這篇文章對其進行一個說明。一、為什麼有影響我們都知道一個對象如果沒有了任何引用,java虛擬機就認為這個對象沒什麼用了,就會對其進行垃圾回收,但是如果這個對象包含了finalize函數,性質就不一樣了。怎麼不一樣了呢?
  • 動力節點Java學院2021年Java學習路線圖最新出爐啦
    Java在程式語言排行榜中一直牢牢佔據榜首位置,幾乎所有的大中型網際網路的應用系統在伺服器端開發首選都是Java編程,正因如何吸引這不少年輕人投入該行業,Java雖不想其它程式語言那麼複雜,但是知識體系還是很龐大的,因此想要學好並非容易之事,不少想要跨入Java編程行業的同學們通過網絡搜索各式各樣的學習資料
  • 我的世界:him之眼、七彩信標燈,MC中簡單易出效果的黑科技
    沒關係,本文所介紹的黑科技都是簡單易出效果的,即使沒有太多遊戲經驗的玩家按照步驟來,也能輕鬆完成!圖醬介紹的這款屬於最基礎的,但應用範圍最廣的。旋轉展示框上的珊瑚,即可將工作檯收回並露出下方的入口。製作原理:展示框中的物品在旋轉時會發出不同強度的紅石信號,這個信號只能被紅石比較器所檢測到,當信號足夠強時便會激活活塞將工作檯推出。