日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程资源 > 编程问答 >内容正文

编程问答

提高生产力:文件和IO操作(ApacheCommonsIO-汉化分享)

發布時間:2025/7/25 编程问答 25 豆豆
生活随笔 收集整理的這篇文章主要介紹了 提高生产力:文件和IO操作(ApacheCommonsIO-汉化分享) 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.
復制、移動、刪除、比較、監控、文件讀寫 等文件和IO操作是編程中比較常用的功能。 幸運的是,Apache Commons IO等開源組件已經幫我們實現了。
?????? 我們可以不用重復造輪子了。

1.資料地址

1.1官方網站:http://commons.apache.org/proper/commons-io/

1.2下載地址:http://commons.apache.org/proper/commons-io/download_io.cgi

2.簡要介紹(官方英文的翻譯版)

2.1版本說明-Release Notes
Commons IO是一個Java工具類庫的包,類似于java.io包。
這個包中的類被認為非常標準和高度復用,以至于值得加入到java.io包中。

Commons IO庫包含了工具類、流實現、文件過濾器、文件比較器、字節序轉換等。

2.2概要-Overview

Commons IO是一個幫助開發IO功能的工具庫。
主要包括了以下6個領域:

①工具類-使用靜態方法執行通用的任務。
②輸入-有用的(字節)輸入流(Input Stream)和(字符)讀取器(Reader)實現。
③輸出-有用的(字節)輸出流(Output Stream)和(字符)書寫器(Writer)實現。
④過濾器-多種多樣的的文件過濾器(java.io.FileFilter,java.io.FilenameFilter)實現。
⑤比較器-多種多樣的文件比較器(java.util.Comparator)實現。
⑥文件監聽器-一個用來監聽文件系統事件的組件。

原文出處:Release Notes來自Release-Notes.txt,Overview來自官方網站。

3.詳細介紹

3.1工具類


FileUtils:

通用的文件操作工具。
這個類提供了以下領域的功能:
向文件中寫入 ;
從文件中讀取 ;
創建目錄,包括父路徑;
拷貝文件和目錄;
刪除文件和目錄;
文件和URL的相互轉換;
通過過濾器和擴展名,列出文件和目錄;
比較文件內容;
文件最后修改日期;
計算checksum。

FilenameUtils:通用的文件名和文件路徑操作工具類。從基于Windows開發環境的機器,移動文件到
基于Unix的生產環境機器時,你可能會遇到關于文件名的問題。這個類的目標就是幫助你避免這些問題。

FileSystemUtils:通用的文件系統工具類。
這個類提供靜態的工具方法,為實現通用的文件系統功能(JDK java.io.File沒有提供的) 。
目前提供的功能僅限于:獲得驅動器的剩余空間。

IOUtils:通用的IO流操作工具類。
這個類提供了輸入/輸出操作的靜態工具方法。

closeQuietly – 這些方法關閉流,忽略null和異常 ;
toXxx/read – 這些方法從流中讀取數據 ;
write – 這些方法向流中寫入數據;
copy – 這些方法拷貝數據從一個流到另外一個;
contentEquals – 這些方法比較2個流中的內容。

ThreadMonitor:監聽一個線程,當線程超時的時候打斷它。

更多介紹,請參考

http://commons.apache.org/proper/commons-io/javadocs/api-release/index.html?org/apache/commons/io/package-summary.html

3.2輸入流


BOMInputStream:第1個字節寫入BOM字節的流。
BrokenInputStream:損壞的輸入流。該流的任何方法都會拋出IOException,主要用來測試“錯誤處理代碼”的正確性。
CountingInputStream:一個字節輸入流的包裝類,用來統計經過該流的字節數。
CharSequenceInputStream:可以從String, StringBuffer, StringBuilder和CharBuffer讀取數據的字節流。
CharSequenceReader:以從String, StringBuffer, StringBuilder和CharBuffer讀取數據的字符流。

該流的一個典型的用途是調試,確保讀取的數據是期待的。

更多介紹,請參考

http://commons.apache.org/proper/commons-io/javadocs/api-release/index.html?org/apache/commons/io/input/package-summary.html

3.3輸出流


BrokenOutputStream:損壞的輸出流。該流的任何方法都會拋出IOException,主要用來測試“錯誤處理代碼”的正確性。
CountingOutputStream:一個字節輸出流的包裝類,用來統計經過該流的字節數。
StringBuilderWriter:Writer的實現類,輸出數據到StringBuilder。
這個實現類是StringWriter之外的另一種選擇,提供非同步的實現,為了更好的性能。
多線程環境的安全用途,應該使用StringWriter。
WriterOutputStream:OutputStream實現類,使用指定的編碼,傳送字節數據到字符流,寫入結果流到Writer。

更多介紹,請參考

http://commons.apache.org/proper/commons-io/javadocs/api-release/index.html?org/apache/commons/io/output/package-summary.html

3.4過濾器


特別說明:"過濾/Filter"這個詞存在歧義,本處的意思是"保留符合條件的文件",而不是"排除符合條件的文件"。


AgeFileFilter:基于cutoff時間的文件過濾器,能夠過濾任何時間更新/更老/相等的文件。
EmptyFileFilter:過濾空的文件和目錄。
SizeFileFilter:基于大小的過濾器,能夠過濾小于/等于/大于指定大小的文件。
NameFileFilter:過濾文件名滿足一定條件的文件。

CanReadFileFilter:這個過濾器接受“可讀”的文件。
CanWriteFileFilter:這個過濾器接受“可寫”的文件。

DirectoryFileFilter:這個過濾器接受“目錄”文件。
FileFileFilter:這個過濾器接受“文件,非目錄”文件。
HiddenFileFilter:這個過濾器接受“隱藏”文件。

AndFileFilter:提供條件"且"邏輯,如果每一個filter否返回true,則返回true。
類似的還有:OrFileFilter/NotFileFilter。

RegexFileFilter:基于正則表達式的過濾器。
WildcardFileFilter:基于通配符的過濾器。

PrefixFileFilter:過濾文件名"前綴"滿足一定條件的文件。
SuffixFileFilter:過濾文件名"后綴"滿足一定條件的文件。

更多介紹,請參考

http://commons.apache.org/proper/commons-io/javadocs/api-release/index.html?org/apache/commons/io/filefilter/package-summary.html

3.5比較器


DefaultFileComparator: 使用默認的File#compareTo(File)方法比較。
CompositeFileComparator:使用一系列委托比較器比較。
DirectoryFileComparator:使用File#isDirectory()方法比較。
ExtensionFileComparator:根據文件的"擴展名"比較。
LastModifiedFileComparator: 根據最后修改日期/時間比較。
NameFileComparator:根據文件名比較。
PathFileComparator:根據文件路徑比較File#getPath()。
ReverseComparator:逆序比較器,把比較結果"倒過來"。
SizeFileComparator:根據文件的長度和大小比較 File#length()和FileUtils#sizeOfDirectory(File)。
更多介紹,請參考
http://commons.apache.org/proper/commons-io/javadocs/api-release/index.html?org/apache/commons/io/comparator/package-summary.html


3.6文件監聽器


FileAlterationListener:接收文件系統變化事件的監聽器。
FileAlterationMonitor:文件變化監控器。
產生一個監控線程,以一定的時間間隔,觸發注冊的FileAlterationObserver。

FileAlterationObserver:文件變化觀察者,代表某一根目錄下的文件狀態,檢查文件系統,通知listener創建、改變和刪除事件。

更多介紹,請參考

http://commons.apache.org/proper/commons-io/javadocs/api-release/index.html?org/apache/commons/io/monitor/package-summary.html


4.一個經典的例子-SpringMVC上傳文件

@RequestMapping(value = "uploadLoginSplash", method = RequestMethod.POST)
public String uploadLoginSplash(HttpServletRequest request, @RequestParam("file") MultipartFile file)
throws IOException {

if (!file.isEmpty()) {
?? String realPath = request.getSession().getServletContext().getRealPath(SPLASH);

?? //這里不必處理IO流關閉的問題,因為FileUtils.copyInputStreamToFile()方法內部會自動把用到的IO流關掉
?? FileUtils.copyInputStreamToFile(file.getInputStream(), new File(realPath, SPLASH_JPG));

?? #org.apache.commons.io.FileUtils
??? }

?? return "manager/setting/settingManager";


}

5.總結
?? ApacheCommonsIO等Apache Commons公共組件,可以大大提高咱們的開發效率,減少軟件Bug和提高軟件質量, 非常值得在項目中使用。


參考資料:commons-io-2.2-javadoc.jar和commons-io-2.2-sources.jar

原文參見: 提高生產力:文件和IO操作(ApacheCommonsIO-漢化分享)

?

轉載于:https://www.cnblogs.com/qitian1/p/6463657.html

《新程序員》:云原生和全面數字化實踐50位技術專家共同創作,文字、視頻、音頻交互閱讀

總結

以上是生活随笔為你收集整理的提高生产力:文件和IO操作(ApacheCommonsIO-汉化分享)的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。