Java 7:使用NIO.2進行文件過濾-第1部分

NIO.2是自Java 7起JDK中包含的用于I / O操作的新API。使用此新API,您可以執行與

java.io以及許多出色的功能,例如:訪問文件元數據和監視目錄更改等。 顯然,由于向后兼容,java.io包不會消失,但是我們鼓勵為滿足新的I / O需求而開始使用NIO.2。 在本文中,我們將看到使用此API過濾目錄內容有多么容易。 有3種方法可以做到這一點,這就是為什么這篇文章是Part1。

你需要什么

NetBeans 7+或任何其他支持Java 7的IDE
JDK 7+

在某些應用程序中,過濾目錄的內容是一項常見的任務,而NIO.2使其變得非常簡單。 接下來將描述我們將要使用的類和接口:

  • java.nio.file.Path :接口,其對象可以表示文件系統中的文件或目錄。 就像java.io.File,但是在NIO.2中。 無論您要執行什么I / O操作,都需要該接口的實例。
  • java.nio.file.DirectoryStream :接口,其對象遍歷目錄的內容。
  • java.nio.file.Files :帶有對文件,目錄等進行操作的靜態方法的類。

我們將使用目錄模式來過濾目錄內容,這種模式類似于正則表達式,但更簡單。 該模式與文件,目錄等的名稱匹配。它們位于目錄內。 記住這一點很重要,使用此方法只能按文件名,目錄名等進行過濾。

有關浮動的更多信息,
檢查此Wiki 。 另外,在 Java文件 。

因此,假設我們有一個名為Images的目錄,并且需要遍歷該目錄中的文件,但是我們只需要.png文件。 為此,我們必須遵循以下步驟:

  1. 獲取一個指向目錄Images的java.nio.file.Path實例。
  2. 打開使用java.nio.file.Files類,以及將目錄和圖案(* .PNG)作為參數的新java.nio.file.DirectoryStream。
  3. 使用java.nio.file.DirectoryStream實例遍歷目錄的內容。

接下來是使用作為參數傳遞的模式掃描目錄的方法的源代碼:

//in a class.../*** Scans the directory using the glob pattern passed * as parameter. * @param folder directory to scan* @param pattern glob pattern (filter)*/private static void scan(String folder, String pattern) {//obtains the Images directory in the app directoryPath dir = Paths.get(folder);//the Files class offers methods for validationif (!Files.exists(dir) || !Files.isDirectory(dir)) {System.out.println('No such directory!');}//Try with resources... so nice!try (DirectoryStreamds = Files.newDirectoryStream(dir, pattern)) {//iterate over the content of the directoryint count = 0;for (Path path : ds) {System.out.println(path.getFileName());count++;}System.out.println();System.out.printf('%d Files match the pattern', count);} catch (IOException ex) {ex.printStackTrace();}}

以下是在Windows計算機上執行的結果:

在我的Linux虛擬機上:

這就是我從Java中喜歡的東西,只需編寫一次,就可以在任何地方運行! 希望您喜歡這篇文章,還有更多方法可以過濾目錄的內容,我們將在以后的文章中進行探討。

單擊此處下載完整的源代碼。

參考: Java 7:使用NIO.2進行文件過濾–來自Java和ME博客的JCG合作伙伴 Alexis Lopez的第1部分 。

翻譯自: https://www.javacodegeeks.com/2012/10/java-7-file-filtering-using-nio-2-part-1.html

本文來自互聯網用戶投稿,該文觀點僅代表作者本人,不代表本站立場。本站僅提供信息存儲空間服務,不擁有所有權,不承擔相關法律責任。
如若轉載,請注明出處:http://www.pswp.cn/news/370345.shtml
繁體地址,請注明出處:http://hk.pswp.cn/news/370345.shtml
英文地址,請注明出處:http://en.pswp.cn/news/370345.shtml

如若內容造成侵權/違法違規/事實不符,請聯系多彩編程網進行投訴反饋email:809451989@qq.com,一經查實,立即刪除!

相關文章

第十三周活動進度表

學習進度表: 第三周內容時間周一(4:10-6:00)上課,周二晚上(8:00-9:00),周四晚上(8:00-8:30)&#…

課時66.顏色控制屬性下(理解)

今天來講解十六進制控制屬性的方法,其實用十六進制表示的方式本質就是rgb,只不過它們的格式不一樣而已,十六進制中是通過每兩位表示一種顏色的方式來給顏色賦值。 如 #FF0000 FF----r 00----g 00----b 修改前兩位相當于修改rgb中的第一…

idea復制java_IntelliJ IDEA的剪切、復制和粘貼

IntelliJ IDEA的剪切、復制和粘貼本節內容概覽:? 剪切、復制和粘貼的基本使用? 復制選定的文本片段? 將路徑復制到文件? 將引用復制到一行或一個符號? 剪切選定的文本片段? 從剪貼板粘貼最后一個條目? 將最后一個條目從剪貼板粘貼為純文本? 從剪貼板粘貼特定…

python方差的計算公式為什么減一_樣本標準差分母為何是n-1

歡迎各位學習從0到1Python數據科學之旅,騰訊課堂和網易云課堂入口分別如下:(騰訊課堂新營業,報名可領取20元優惠券)微信公眾號:pythonEducation模型和統計項目QQ:231469242大家好,今天給大家介紹標準差。標…

pxe+kickstart 自動化部署linux操作系統

kickstart 是什么? 批量部署Linux服務器操作系統 運行模式: C/S client/server 服務器上要部署: DHCP tftp(非交互式文件共享) 安裝系統的三個步驟: 1、加載vmlinuz、 initrd (微型啟動根目錄,它…

課時57.HTML被廢棄的標簽(掌握)

1.為什么HTML中有一部分標簽會被廢棄&#xff1f; 因為當前HTML中的標簽只有一個作用&#xff0c;就是用來添加語義&#xff0c;而早期的HTML標簽中有一部分標簽是沒有語義的 有一部分標簽是用來修改樣式的 所以這部分標簽就被淘汰了 <br><hr><font> <…

Java編碼約定被認為是有害的

在Oracle網站上有Java編程語言指南的正式代碼約定 。 您可能希望這份超過20頁的文檔將是有關Java語言的最佳實踐&#xff0c;提示和技巧的最完整&#xff0c;最全面和最權威的來源。 但是一旦你開始閱讀它&#xff0c;失望和憤怒就會增加。 我想指出本指南中最明顯的錯誤&#…

flash php socket通信_php socket通信機制實例說明

php socket通信機制實例說明與代碼----什么是socket 所謂socket一般也稱作"套接字"&#xff0c;用于描述ip地址和端口&#xff0c;是一個通訊鏈的句柄。使用程序一般經過"套接字"向network發出請求也許應對network請求。說白了就是一種通訊機制。它類似于銀…

python的ogr模塊_python GDAL/OGR模塊安裝注意事項

軟件準備&#xff1a;首先&#xff0c;確保電腦里已安裝python2.7(2.x版本的比較好用&#xff0c;因為還使用ArcGIS)&#xff0c;然后從http://www.gisinternals.com網站上下載這兩個文件GDAL-2.1.3.win32-py2.7.msi和gdal-201-1500-core.msi。軟件安裝&#xff1a;首先安裝gda…

課時55.詳情和概要標簽(理解)

1.什么是詳情和概要標簽&#xff1f; 作用&#xff1a;利用summary標簽來描述概要信息&#xff0c;利用details標簽來描述詳情信息 默認情況下是折疊展示&#xff0c;想看見詳情必須點擊 格式&#xff1a; <details> <summary>概要信息</summary> 詳情信…

Spring Security可以做的十件事

一 您可以在Spring XML配置文件中指定您選擇的授權提供者。 您可以通過配置Spring的http://www.springframework.org/schema/security/spring-security-3.1.xsd模式中定義的authentication-manager來實現。 簡化的authentication-manager元素定義看起來像這樣&#xff1a; &l…

python編寫自定義函數判斷n1-n2范圍內的素數_【每日道代碼題001】- PYTHON基礎復習...

問題001-1&#xff1a;請對輸入三個整數a,b,c,判斷能否以它們為三個邊長構成三角形。若能&#xff0c;輸出YES和面積&#xff0c;否則輸出NOa float(input())b float(input())c float(input())if a > 0 and b > 0 and c > 0: #判斷邊長是否為正if (a b > c) an…

php繪制一個三角形,如何利用css或html5畫出一個三角形?兩種不同的制作三角形方法(代碼實例)...

我們在平時的前端開發的時候&#xff0c;有時候是需要一些小圖形來豐富一下頁面效果&#xff0c;比如&#xff1a;下拉列表的倒三角圖形。那么這樣的一個三角形是如何制作出來的&#xff0c;本章給大家介紹如何利用css或html畫出一個三角形&#xff1f;兩種不同的制作三角形方法…

課時53.video標簽(掌握)

這節課來學習一下html5中新增的標簽&#xff0c;我們先來看一下&#xff0c;html5中新增了哪些標簽&#xff1f; 打開W3school的網頁&#xff0c;點擊參考手冊中的HTML/HTML5標簽&#xff0c;有一個按字母順序排列的標簽&#xff0c;但凡標簽后面帶有5標記的&#xff0c;都是h…

Date函數基礎知識整理

Date類型&#xff1a;1.Date.parse()接收一個表示日期的字符串參數&#xff0c;然后再根據這個字符串返回響應的日期的毫秒數&#xff1b;如&#xff1a;創建一個日期&#xff1a; 1 <script> 2 // var someDatenew Date(May 25,2004); 3 // console.log(someDate);//Tue…

Google Guava –與Monitor同步

Google Guava項目是每個Java開發人員都應該熟悉的庫的集合。 Guava庫涵蓋I / O&#xff0c;集合&#xff0c;字符串操作和并發性。 在這篇文章中&#xff0c;我將介紹Monitor類。 Monitor是一種同步構造&#xff0c;可以在使用ReentrantLock的任何地方使用。 在任何時候&#x…

yaf 重寫index.php,php框架Yaf路由重寫實例代碼

通常為了友好的URL格式&#xff0c;會進行站點URL的重寫&#xff0c;可以在webserver(Nginx)的配置中進行rewrite&#xff0c;也可在在程序端進行&#xff0c;本文主要和大家介紹php框架Yaf路由重寫&#xff0c;給大家做個參考&#xff0c;希望能幫助到大家。以下使用Yaf框架進…

python類初始化導入庫_Python中optparser庫用法實例詳解

本文研究的主要是Python中optparser庫的相關內容&#xff0c;具體如下。一直以來對optparser不是特別的理解&#xff0c;今天就狠下心&#xff0c;靜下心研究了一下這個庫。當然了&#xff0c;不敢說理解的很到位&#xff0c;但是足以應付正常的使用了。廢話不多說&#xff0c;…

SQL--Chapter8--Working with Triggers and Transactions

Objectives:1.Implement triggers 2.Implement transactions 轉載于:https://www.cnblogs.com/Catherinezhilin/p/7979644.html

Canvas制作的下雨動畫

簡介 在codepen上看到一個Canvas做的下雨效果動畫&#xff0c;感覺蠻有意思的。就研究了下&#xff0c;這里來分享下&#xff0c;實現技巧。效果可以見下面的鏈接。 霓虹雨: http://codepen.io/natewiley/full/NNgqVJ/ 效果截圖&#xff1a; Canvas動畫基礎 大家都知道&…