前言:
文件類操作場景,我想大家應該很熟悉,內容寫文件、保存文件、拷貝文件、移動文件、刪除文件.....等等等等,雖說java.io包提供了文件和流的基礎類庫,能夠支持我們實現所有的文件操作,但是畢竟是基礎類庫,意味着我們需要自己在此基礎上進行相應的封裝已滿足特定的需求場景,那麼一個最熟悉的聲音"有沒有現成的比較好的工具類已完成此項工作,我們拿來即用呢?",答案是肯定的,下面就帶大家認識一下Apache下一個優秀的io封裝類庫,相信你若用到,定愛不釋手!
開發環境:
1、添加依賴
這裏默認我們已使用的maven項目,否則的話請自行下載依賴相關的java包也一樣,項目引入以下依賴:
<!-- https://mvnrepository.com/artifact/commons-io/commons-io -->
<dependency>
<groupId>commons-io</groupId>
<artifactId>commons-io</artifactId>
<version>2.6</version>
</dependency>
2、api演示
該類庫裏面關於文件的操作我們主要用到org.apache.commons.io.FileUtils類,其中常用的文件或文件夾的操作這裏分爲5大類:
write系列:各種各樣的寫文件
read系列:各種各樣的讀文件
copy系列:顧名思義爲文件或文件夾的拷貝。
move系列:文件或文件夾的移動。
force系列:文件或文件夾的創建與刪除。
當然除了這幾類常用的api之外該工具類還有些許其它方法,如果有了使用需求,可以先瞄一眼。
3、場景使用舉例
需求場景一:第三方業務系統上報一類業務數據,其中某個字段如header爲用戶頭像,但是該字段傳遞的值可能是互聯網可訪問url,也可能是內網環境傳遞上來的圖片base64,現要求將上報上來用戶數據的頭像圖片保存到本地文件系統。
分析:由於圖片數據有兩類,(1)、可訪問url (2)、base64字符串,針對url肯定是直接下載保存保存本地,針對base64則只能解碼爲圖片字節再存儲本地。
實現:這裏只處理核心業務塊如下:
需求場景二:數據庫有一份住戶數據,我們需要取出每條記錄中的若干字段到本地進行逐條包裝處理,這個取出的數據是線上數據庫,本地程序不能直連,只以我們寫好的sql語句導出到txt文件中給到我們,我們拿到txt文件,要讀取到對應實體模型中處理。
分析:首先把數據庫的每條數據也就是文件裏面的每行數據讀取出來,使用tab符分割每行數據拿到每個字段值即可,這裏的講解的重點不是讀取到模型之後如何處理,恰好是如何把txt中每條記錄獨佔一行,字段之間以tab符分割的數據讀取到模型中。
實現:當然java的BufferedReader來包裝FileReader來包裝File,然後使用其readLine()方法逐行讀取是可以的:
但是有沒有更簡潔,更乾淨的方式處理呢(不要固執的說,即使你用最簡潔的api來做,它的底層一樣逃不過如上的幾個步驟,我們這裏不討論底層如何實現,我們討論的是如何站在巨人的肩膀上搬磚,否則,你回家坐車最終也是你再那條路上走了十萬八千里,沒有逃過每一米路面,何不你自己跑回家呢,還能省點錢,更環保綠色的出行方式...),那麼我們就來看看今天介紹的工具類是如何處理的:
看吧,一行代碼就把你需要的我文件讀取成爲最方便的數據結構去了。
通過兩個小小的例子可以看出來,這個工具類庫是如何簡介強大了吧,有需要的小夥伴兒們,趕快試試吧,如果覺得好用,不妨幫我點個贊,鼓勵鼓勵我在分享的路上,永不止步哦...!