java io流裡面使用到了很多的設計模式,最典型的就是裝飾模式,還有指令模式,下面分成兩部分來講Java IO檔過濾器對命令設計模式的使用,一起看看吧
一. 點睛
##java io流裡面使用到了很多的設計模式,最典型的就是裝飾模式,還有指令模式。透過對檔案過濾器功能的簡單使用,可以一窺java io流對指令設計模式的典型使用。以下分兩部分來講,先舉例說說文件過濾器的簡單使用,再引申到它是如何使用到命令設計模式的,不會大篇幅講模式,對命令模式想做更深入的了解請參考其他資料。二.範例
我們進行javapublic 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中文網其他相關文章!

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

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

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

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

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

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

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


熱AI工具

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

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

Undress AI Tool
免費脫衣圖片

Clothoff.io
AI脫衣器

AI Hentai Generator
免費產生 AI 無盡。

熱門文章

熱工具

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

EditPlus 中文破解版
體積小,語法高亮,不支援程式碼提示功能

禪工作室 13.0.1
強大的PHP整合開發環境

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

PhpStorm Mac 版本
最新(2018.2.1 )專業的PHP整合開發工具