搜尋
首頁Javajava教程總結Java IO檔案過濾器的使用介紹

總結Java IO檔案過濾器的使用介紹

Jun 17, 2017 pm 01:55 PM
java使用總結文件過濾器

java io流裡面使用到了很多的設計模式,最典型的就是裝飾模式,還有指令模式,下面分成兩部分來講Java IO檔過濾器對命令設計模式的使用,一起看看吧

一. 點睛

##java io流裡面使用到了很多的設計模式,最典型的就是裝飾模式,還有指令模式。透過對檔案過濾器功能的簡單使用,可以一窺java io流對指令設計模式的典型使用。以下分兩部分來講,先舉例說說文件過濾器的簡單使用,再引申到它是如何使用到命令設計模式的,不會大篇幅講模式,對命令模式想做更深入的了解請參考其他資料。

二.範例

我們進行java

程式設計的時候,如果想要存取檔案或目錄,會使用File類,File是一個很強大的類,不管檔案或目錄都可以使用它。如果要遍歷檔案會使用到File類別的list()方法,它會列出目前File物件的所有子檔案名稱和路徑名,如果有的檔案名稱或路徑名稱不想要列出來怎麼辦?File類別給提供了另外一個重載的具有過濾功能的方法list(FilenameFilter filter)可以滿足我們的需要,方法聲明如下:

public String[] list(FilenameFilter filter);

參數裡面的FilenameFilter就是文件名過濾接口,該接口有一個方法accept()方法,我們自訂的檔案名稱過濾器需要實作該接口,並實作accept()方法來自訂規則。 FilenameFilter介面宣告如下所示:

public interface FilenameFilter {
 boolean accept(File dir, String name);
}

下面來看具體怎麼使用的,意思是列出目前工作空間下所有以.xml結尾的檔案名稱或路徑名稱。

1. 寫自訂檔案篩選器:

package org.light4j.io.fileFilter;
import java.io.File;
import java.io.FilenameFilter;
/**
 * 自定义文件名过滤器
 * 
 * @author longjiazuo
 * 
 */
public class MyFilenameFilter implements FilenameFilter {
 @Override
 public boolean accept(File dir, String name) {
  // 如果文件以.xml结尾则符合条件返回true
  return name.endsWith(".xml");
 }
}

2. 寫測試類別

package org.light4j.io.fileFilter;
import java.io.File;
/**
 * 文件过滤器测试
 * 
 * <p>
 * 列出当前工作目录下符合条件的所有子文件名和路径名
 * </p>
 * 
 * @author longjiazuo
 * 
 */
public class FilenameFilterTest {
 public static void main(String[] args) {
  // 获取工作目录
  String workDir = System.getProperty("user.dir");
  File file = new File(workDir);
  // 列举当前工作目录下的所有文件
  String[] files = file.list(new MyFilenameFilter());
  // 循环遍历
  for (String string : files) {
   System.out.println(string);
  }
 }
}

執行上面程式碼可以在控制台看到只列出以.xml結尾的檔名或路徑名。

三.指令設計模式

指令模式是關於如何處理一個物件請求另外一個物件呼叫其方法完成某項功能的設計模式,當一個物件請求另外一個物件呼叫其方法時,並不和被請求的物件直接交互,而是把這種請求封裝到一個命令物件中,具體做法是將請求封裝在命令物件的一個方法裡,將命令物件作為參數傳遞。命令模式的核心就是使用命令物件來封裝方法的呼叫。

在專案中,我們不會只有一個類,所以經常涉及一個物件請求另外一個物件呼叫它的方法來達到某種目的。如果請求者這時候不希望或無法直接和被請求者進行交互,換句話說就是請求者不包含被請求者的

引用,那麼這個時候二者如何進行交互?我們可以使用指令模式來達到目的。例如,我們日常點外賣,我們不直接和飯店打交道,而是會上美團等外賣網站購買,外賣網站會把你要買外賣的請求作為一個點餐命令告訴飯店,只要該點餐命令被成功傳遞給飯店,你一定能夠收到外帶。

現在回到檔案過濾器的使用上面來,File類別的list(FilenameFilter filter)方法透過使用一個介面物件作為參數來實現過濾檔案名稱的功能,具體的規則定義則是在FilenameFilter接口子類別的方法accept()裡面來實現的,這就是指令設計模式的使用。

按道理,既然list(FilenameFilter filter)方法想要一個判斷哪些檔案需要被列出來的規則,那我們把規則傳進去就行了,這個規則是一個程式碼區塊,但是目前的java並不支援向方法裡面傳入程式碼區塊的做法,所以java使用了FilenameFilter的accept()方法來封裝判斷規則,傳入的MyFilenameFilter物件的作用其實是為了傳入accept()方法的方法體,這個方法體的作用就是判斷哪些檔案名稱或路徑名稱符合規則,list(FilenameFilter filter)的實作原始碼如下所示:

以上是總結Java IO檔案過濾器的使用介紹的詳細內容。更多資訊請關注PHP中文網其他相關文章!

陳述
本文內容由網友自願投稿,版權歸原作者所有。本站不承擔相應的法律責任。如發現涉嫌抄襲或侵權的內容,請聯絡admin@php.cn
如何將Apache的.htaccess配置轉換為Nginx的配置?如何將Apache的.htaccess配置轉換為Nginx的配置?Apr 19, 2025 pm 05:09 PM

將Apache的.htaccess配置轉換為Nginx的配置方法在項目開發中,經常會遇到需要將服務器從Apache遷移到Nginx的情況。 Ap...

在小規模JavaWeb應用中,Dao層對所有人員實體類進行緩存是否可行?在小規模JavaWeb應用中,Dao層對所有人員實體類進行緩存是否可行?Apr 19, 2025 pm 05:06 PM

JavaWeb應用性能優化:Dao層實體類緩存的可行性探討在JavaWeb應用開發中,性能優化一直是開發者關注的重點。尤�...

極坐標下二重積分∫∫ydσ=0的原因是什麼?極坐標下二重積分∫∫ydσ=0的原因是什麼?Apr 19, 2025 pm 05:03 PM

在極坐標系下求解二重積分本文將詳細解答一道關於極坐標下二重積分的題目。題目給出了一個積分區域和被積...

高並發下如何保證出庫腳本任務的唯一性並實時監控其運行狀態?高並發下如何保證出庫腳本任務的唯一性並實時監控其運行狀態?Apr 19, 2025 pm 05:00 PM

在高並發環境下如何保證腳本任務的唯一性和監控其運行狀態?本文將探討如何在集群環境中,確保一個出庫腳...

子類如何通過繼承父類的setName方法設置私有屬性?子類如何通過繼承父類的setName方法設置私有屬性?Apr 19, 2025 pm 04:57 PM

關於子類如何通過繼承父類的setName方法設置私有屬性在編程中,特別是在面向對象編程的語言如Java中,子類與�...

如何解決使用Eclipse Paho的MqttAsyncClient連接本地EMQX時用戶名密碼認證失敗的問題?如何解決使用Eclipse Paho的MqttAsyncClient連接本地EMQX時用戶名密碼認證失敗的問題?Apr 19, 2025 pm 04:54 PM

如何解決使用EclipsePaho的MqttAsyncClient連接本地EMQX時用戶名密碼認證失敗的問題?在使用Java和Eclipse...

公司安全軟件導致應用無法運行?如何排查和解決?公司安全軟件導致應用無法運行?如何排查和解決?Apr 19, 2025 pm 04:51 PM

公司安全軟件導致部分應用無法正常運行的排查與解決方法許多公司為了保障內部網絡安全,會部署安全軟件。 ...

Java如何正確生成並顯示微信小程序帶參數二維碼?Java如何正確生成並顯示微信小程序帶參數二維碼?Apr 19, 2025 pm 04:48 PM

在Java中生成帶參數的微信小程序二維碼並將其顯示在HTML頁面上,是一個常見的需求。本文將詳細探討如何使用J...

See all articles

熱AI工具

Undresser.AI Undress

Undresser.AI Undress

人工智慧驅動的應用程序,用於創建逼真的裸體照片

AI Clothes Remover

AI Clothes Remover

用於從照片中去除衣服的線上人工智慧工具。

Undress AI Tool

Undress AI Tool

免費脫衣圖片

Clothoff.io

Clothoff.io

AI脫衣器

AI Hentai Generator

AI Hentai Generator

免費產生 AI 無盡。

熱工具

SecLists

SecLists

SecLists是最終安全測試人員的伙伴。它是一個包含各種類型清單的集合,這些清單在安全評估過程中經常使用,而且都在一個地方。 SecLists透過方便地提供安全測試人員可能需要的所有列表,幫助提高安全測試的效率和生產力。清單類型包括使用者名稱、密碼、URL、模糊測試有效載荷、敏感資料模式、Web shell等等。測試人員只需將此儲存庫拉到新的測試機上,他就可以存取所需的每種類型的清單。

EditPlus 中文破解版

EditPlus 中文破解版

體積小,語法高亮,不支援程式碼提示功能

禪工作室 13.0.1

禪工作室 13.0.1

強大的PHP整合開發環境

SublimeText3 英文版

SublimeText3 英文版

推薦:為Win版本,支援程式碼提示!

PhpStorm Mac 版本

PhpStorm Mac 版本

最新(2018.2.1 )專業的PHP整合開發工具