提高生产力:文件和IO操作(ApacheCommonsIO-汉化分享)
?????? 我們可以不用重復(fù)造輪子了。
1.資料地址
1.1官方網(wǎng)站: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是一個(gè)Java工具類庫的包,類似于java.io包。
這個(gè)包中的類被認(rèn)為非常標(biāo)準(zhǔn)和高度復(fù)用,以至于值得加入到j(luò)ava.io包中。
Commons IO庫包含了工具類、流實(shí)現(xiàn)、文件過濾器、文件比較器、字節(jié)序轉(zhuǎn)換等。
2.2概要-Overview
Commons IO是一個(gè)幫助開發(fā)IO功能的工具庫。
主要包括了以下6個(gè)領(lǐng)域:
①工具類-使用靜態(tài)方法執(zhí)行通用的任務(wù)。
②輸入-有用的(字節(jié))輸入流(Input Stream)和(字符)讀取器(Reader)實(shí)現(xiàn)。
③輸出-有用的(字節(jié))輸出流(Output Stream)和(字符)書寫器(Writer)實(shí)現(xiàn)。
④過濾器-多種多樣的的文件過濾器(java.io.FileFilter,java.io.FilenameFilter)實(shí)現(xiàn)。
⑤比較器-多種多樣的文件比較器(java.util.Comparator)實(shí)現(xiàn)。
⑥文件監(jiān)聽器-一個(gè)用來監(jiān)聽文件系統(tǒng)事件的組件。
原文出處:Release Notes來自Release-Notes.txt,Overview來自官方網(wǎng)站。
3.詳細(xì)介紹
3.1工具類
FileUtils:
通用的文件操作工具。
這個(gè)類提供了以下領(lǐng)域的功能:
向文件中寫入 ;
從文件中讀取 ;
創(chuàng)建目錄,包括父路徑;
拷貝文件和目錄;
刪除文件和目錄;
文件和URL的相互轉(zhuǎn)換;
通過過濾器和擴(kuò)展名,列出文件和目錄;
比較文件內(nèi)容;
文件最后修改日期;
計(jì)算checksum。
FilenameUtils:通用的文件名和文件路徑操作工具類。從基于Windows開發(fā)環(huán)境的機(jī)器,移動(dòng)文件到
基于Unix的生產(chǎn)環(huán)境機(jī)器時(shí),你可能會(huì)遇到關(guān)于文件名的問題。這個(gè)類的目標(biāo)就是幫助你避免這些問題。
FileSystemUtils:通用的文件系統(tǒng)工具類。
這個(gè)類提供靜態(tài)的工具方法,為實(shí)現(xiàn)通用的文件系統(tǒng)功能(JDK java.io.File沒有提供的) 。
目前提供的功能僅限于:獲得驅(qū)動(dòng)器的剩余空間。
IOUtils:通用的IO流操作工具類。
這個(gè)類提供了輸入/輸出操作的靜態(tài)工具方法。
closeQuietly – 這些方法關(guān)閉流,忽略null和異常 ;
toXxx/read – 這些方法從流中讀取數(shù)據(jù) ;
write – 這些方法向流中寫入數(shù)據(jù);
copy – 這些方法拷貝數(shù)據(jù)從一個(gè)流到另外一個(gè);
contentEquals – 這些方法比較2個(gè)流中的內(nèi)容。
ThreadMonitor:監(jiān)聽一個(gè)線程,當(dāng)線程超時(shí)的時(shí)候打斷它。
更多介紹,請參考
http://commons.apache.org/proper/commons-io/javadocs/api-release/index.html?org/apache/commons/io/package-summary.html
3.2輸入流
BOMInputStream:第1個(gè)字節(jié)寫入BOM字節(jié)的流。
BrokenInputStream:損壞的輸入流。該流的任何方法都會(huì)拋出IOException,主要用來測試“錯(cuò)誤處理代碼”的正確性。
CountingInputStream:一個(gè)字節(jié)輸入流的包裝類,用來統(tǒng)計(jì)經(jīng)過該流的字節(jié)數(shù)。
CharSequenceInputStream:可以從String, StringBuffer, StringBuilder和CharBuffer讀取數(shù)據(jù)的字節(jié)流。
CharSequenceReader:以從String, StringBuffer, StringBuilder和CharBuffer讀取數(shù)據(jù)的字符流。
該流的一個(gè)典型的用途是調(diào)試,確保讀取的數(shù)據(jù)是期待的。
更多介紹,請參考
http://commons.apache.org/proper/commons-io/javadocs/api-release/index.html?org/apache/commons/io/input/package-summary.html
3.3輸出流
BrokenOutputStream:損壞的輸出流。該流的任何方法都會(huì)拋出IOException,主要用來測試“錯(cuò)誤處理代碼”的正確性。
CountingOutputStream:一個(gè)字節(jié)輸出流的包裝類,用來統(tǒng)計(jì)經(jīng)過該流的字節(jié)數(shù)。
StringBuilderWriter:Writer的實(shí)現(xiàn)類,輸出數(shù)據(jù)到StringBuilder。
這個(gè)實(shí)現(xiàn)類是StringWriter之外的另一種選擇,提供非同步的實(shí)現(xiàn),為了更好的性能。
多線程環(huán)境的安全用途,應(yīng)該使用StringWriter。
WriterOutputStream:OutputStream實(shí)現(xiàn)類,使用指定的編碼,傳送字節(jié)數(shù)據(jù)到字符流,寫入結(jié)果流到Writer。
更多介紹,請參考
http://commons.apache.org/proper/commons-io/javadocs/api-release/index.html?org/apache/commons/io/output/package-summary.html
3.4過濾器
特別說明:"過濾/Filter"這個(gè)詞存在歧義,本處的意思是"保留符合條件的文件",而不是"排除符合條件的文件"。
AgeFileFilter:基于cutoff時(shí)間的文件過濾器,能夠過濾任何時(shí)間更新/更老/相等的文件。
EmptyFileFilter:過濾空的文件和目錄。
SizeFileFilter:基于大小的過濾器,能夠過濾小于/等于/大于指定大小的文件。
NameFileFilter:過濾文件名滿足一定條件的文件。
CanReadFileFilter:這個(gè)過濾器接受“可讀”的文件。
CanWriteFileFilter:這個(gè)過濾器接受“可寫”的文件。
DirectoryFileFilter:這個(gè)過濾器接受“目錄”文件。
FileFileFilter:這個(gè)過濾器接受“文件,非目錄”文件。
HiddenFileFilter:這個(gè)過濾器接受“隱藏”文件。
AndFileFilter:提供條件"且"邏輯,如果每一個(gè)filter否返回true,則返回true。
類似的還有:OrFileFilter/NotFileFilter。
RegexFileFilter:基于正則表達(dá)式的過濾器。
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: 使用默認(rèn)的File#compareTo(File)方法比較。
CompositeFileComparator:使用一系列委托比較器比較。
DirectoryFileComparator:使用File#isDirectory()方法比較。
ExtensionFileComparator:根據(jù)文件的"擴(kuò)展名"比較。
LastModifiedFileComparator: 根據(jù)最后修改日期/時(shí)間比較。
NameFileComparator:根據(jù)文件名比較。
PathFileComparator:根據(jù)文件路徑比較File#getPath()。
ReverseComparator:逆序比較器,把比較結(jié)果"倒過來"。
SizeFileComparator:根據(jù)文件的長度和大小比較 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文件監(jiān)聽器
FileAlterationListener:接收文件系統(tǒng)變化事件的監(jiān)聽器。
FileAlterationMonitor:文件變化監(jiān)控器。
產(chǎn)生一個(gè)監(jiān)控線程,以一定的時(shí)間間隔,觸發(fā)注冊的FileAlterationObserver。
FileAlterationObserver:文件變化觀察者,代表某一根目錄下的文件狀態(tài),檢查文件系統(tǒng),通知listener創(chuàng)建、改變和刪除事件。
更多介紹,請參考
http://commons.apache.org/proper/commons-io/javadocs/api-release/index.html?org/apache/commons/io/monitor/package-summary.html
4.一個(gè)經(jīng)典的例子-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流關(guān)閉的問題,因?yàn)镕ileUtils.copyInputStreamToFile()方法內(nèi)部會(huì)自動(dòng)把用到的IO流關(guān)掉
?? FileUtils.copyInputStreamToFile(file.getInputStream(), new File(realPath, SPLASH_JPG));
?? #org.apache.commons.io.FileUtils
??? }
?? return "manager/setting/settingManager";
}
5.總結(jié)
?? ApacheCommonsIO等Apache Commons公共組件,可以大大提高咱們的開發(fā)效率,減少軟件Bug和提高軟件質(zhì)量, 非常值得在項(xiàng)目中使用。
參考資料:commons-io-2.2-javadoc.jar和commons-io-2.2-sources.jar
原文參見: 提高生產(chǎn)力:文件和IO操作(ApacheCommonsIO-漢化分享)
?
轉(zhuǎn)載于:https://www.cnblogs.com/qitian1/p/6463657.html
《新程序員》:云原生和全面數(shù)字化實(shí)踐50位技術(shù)專家共同創(chuàng)作,文字、視頻、音頻交互閱讀總結(jié)
以上是生活随笔為你收集整理的提高生产力:文件和IO操作(ApacheCommonsIO-汉化分享)的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: [置顶] 显示/隐藏登录密
- 下一篇: 程序设置横屏后,锁屏时会被销毁一遍,解锁