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

歡迎訪問(wèn) 生活随笔!

生活随笔

當(dāng)前位置: 首頁(yè) > 编程资源 > 编程问答 >内容正文

编程问答

[19/04/04-星期四] IO技术_CommonsIO(通用IO,别人造的轮子,FileUtils类 操作文件 IOUtilsl类 操作里边的内容 )...

發(fā)布時(shí)間:2025/5/22 编程问答 28 豆豆
生活随笔 收集整理的這篇文章主要介紹了 [19/04/04-星期四] IO技术_CommonsIO(通用IO,别人造的轮子,FileUtils类 操作文件 IOUtilsl类 操作里边的内容 )... 小編覺(jué)得挺不錯(cuò)的,現(xiàn)在分享給大家,幫大家做個(gè)參考.

一、概念

? ? ? ? ?JDK中提供的文件操作相關(guān)的類,但是功能都非常基礎(chǔ),進(jìn)行復(fù)雜操作時(shí)需要做大量編程工作。實(shí)際開(kāi)發(fā)中,往往需要

你自己動(dòng)手編寫(xiě)相關(guān)的代碼,尤其在遍歷目錄文件時(shí),經(jīng)常用到遞歸,非常繁瑣。

? ? ? ? Apache-commons工具包中提供了IOUtils/FileUtils,可以讓我們非常方便的對(duì)文件和目錄進(jìn)行操作。?

? ? ? ?Apache軟件基金會(huì)(也就是Apache Software Foundation,簡(jiǎn)稱為ASF),是專門(mén)為支持開(kāi)源軟件項(xiàng)目而辦的一個(gè)非盈利性組織。

在它所支持的Apache項(xiàng)目與子項(xiàng)目中,所發(fā)行的軟件產(chǎn)品都遵循Apache許可證(Apache License)。 官方網(wǎng)址為:www.apache.org 。

很多著名的Java開(kāi)源項(xiàng)目都來(lái)源于這個(gè)組織。比如:commons、kafka、lucene、maven、shiro、struts等技術(shù),以及大數(shù)據(jù)技術(shù)中的

hadoop(大數(shù)據(jù)第一技術(shù))、hbase、spark、storm、mahout等。

FieUtils類中常用方法的介紹

? ? ??打開(kāi)FileUtils的api文檔,我們抽出一些工作中比較常用的方法,進(jìn)行總結(jié)和講解。總結(jié)如下:

? ? ??cleanDirectory:清空目錄,但不刪除目錄。

? ? ??contentEquals:比較兩個(gè)文件的內(nèi)容是否相同。

? ? ??copyDirectory:將一個(gè)目錄內(nèi)容拷貝到另一個(gè)目錄。可以通過(guò)FileFilter過(guò)濾需要拷貝的 文件。

? ? ??copyFile:將一個(gè)文件拷貝到一個(gè)新的地址。

? ? ??copyFileToDirectory:將一個(gè)文件拷貝到某個(gè)目錄下。

? ? ??copyInputStreamToFile:將一個(gè)輸入流中的內(nèi)容拷貝到某個(gè)文件。

? ? ??deleteDirectory:刪除目錄。

? ? ??deleteQuietly:刪除文件。

? ? ??listFiles:列出指定目錄下的所有文件。

? ? ??openInputSteam:打開(kāi)指定文件的輸入流。

? ? ??readFileToString:將文件內(nèi)容作為字符串返回。

? ? ??readLines:將文件內(nèi)容按行返回到一個(gè)字符串?dāng)?shù)組中。

? ? ??size:返回文件或目錄的大小。

? ? ??write:將字符串內(nèi)容直接寫(xiě)到文件中。

? ? ??writeByteArrayToFile:將字節(jié)數(shù)組內(nèi)容寫(xiě)到文件中。

? ? ??writeLines:將容器中的元素的toString方法返回的內(nèi)容依次寫(xiě)入文件中。

? ? ??writeStringToFile:將字符串內(nèi)容寫(xiě)到文件中。

【代碼示例】

1 /**練習(xí)自己導(dǎo)入包jar包 commons-io 即通用IO jar包,別人造的輪子 2 *FieUtils類 3 * 4 */ 5 package cn.sxt.test; 6 7 import java.io.File; 8 import java.nio.file.Files; 9 import java.util.Collection; 10 11 import org.apache.commons.io.FileUtils; 12 import org.apache.commons.io.filefilter.DirectoryFileFilter; 13 import org.apache.commons.io.filefilter.EmptyFileFilter; 14 import org.apache.commons.io.filefilter.FileFileFilter; 15 import org.apache.commons.io.filefilter.FileFilterUtils; 16 import org.apache.commons.io.filefilter.SuffixFileFilter; 17 18 19 public class Test_0404_CommonsIO_FieUtils { 20 public static void main(String[] args) { 21 //文件的大小,直接用 新jar包中的FileUtils類的sizeOf方法 22 long len=FileUtils.sizeOf(new File("src.txt")); 23 System.out.println(len); 24 25 //目錄的大小 查看lib左邊的lib目錄 26 long len2=FileUtils.sizeOf(new File("lib")); 27 System.out.println(len2); 28 29 30 //3、列出子孫集 31 File file=new File("dest"); 32 //3-1 參數(shù)1:放個(gè)源文件夾 參數(shù)2:過(guò)濾器,保留哪一些東西 參數(shù)3:是否列出子孫集/null 表示只進(jìn)行一層 把它們放在容器中去 33 //EmptyFileFilter.NOT_EMPTY:只要非空的 下邊有個(gè)empty文件是空的0KB 34 Collection<File> files=FileUtils.listFiles(file, EmptyFileFilter.NOT_EMPTY, null); 35 for (File tempfile : files) {//遍歷輸出絕對(duì)路徑, 只遍歷dest下邊的直系文件, 實(shí)際上里邊的src文件夾還有東西 36 System.out.println(tempfile.getAbsolutePath()); 37 } 38 System.out.println("-----------"); 39 File file2=new File("dest");//DirectoryFileFilter 目錄過(guò)濾 INSTANCE示例 操作子孫集的 40 Collection<File> files2=FileUtils.listFiles(file2, EmptyFileFilter.NOT_EMPTY, DirectoryFileFilter.INSTANCE); 41 //3-2、只輸出文件后綴為.html的文件。 Suffix后綴。詞尾 42 Collection<File> files3=FileUtils.listFiles(file2, new SuffixFileFilter("html"), 43 DirectoryFileFilter.INSTANCE); 44 //3-3、or的用法 既要.html的文件又要.jpg的文件 45 Collection<File> files4=FileUtils.listFiles(file2, FileFilterUtils.or( 46 new SuffixFileFilter("html"),new SuffixFileFilter("jpg") ), 47 DirectoryFileFilter.INSTANCE); 48 //3-4、我全都要 and的用法 既是txt文件又是空文件的 49 Collection<File> files5=FileUtils.listFiles(file2, FileFilterUtils.and( 50 new SuffixFileFilter("txt"),EmptyFileFilter.EMPTY ), 51 DirectoryFileFilter.INSTANCE); 52 53 for (File tempfile : files5) {//遍歷輸出絕對(duì)路徑, 遍歷dest目錄下的的所有東西 54 System.out.println(tempfile.getAbsolutePath()); 55 } 56 57 58 } 59 60 }

?

IOUtils類中常用方法的介紹

? ? 1. buffer方法:將傳入的流進(jìn)行包裝,變成緩沖流。并可以通過(guò)參數(shù)指定緩沖大小。

? ? ??2. closeQueitly方法:關(guān)閉流。

? ? ??3. contentEquals方法:比較兩個(gè)流中的內(nèi)容是否一致。

? ? ??4. copy方法:將輸入流中的內(nèi)容拷貝到輸出流中,并可以指定字符編碼。

? ? ??5. copyLarge方法:將輸入流中的內(nèi)容拷貝到輸出流中,適合大于2G內(nèi)容的拷貝。

? ? ??6. lineIterator方法:返回可以迭代每一行內(nèi)容的迭代器。

? ? ??7. read方法:將輸入流中的部分內(nèi)容讀入到字節(jié)數(shù)組中。

? ? ??8. readFully方法:將輸入流中的所有內(nèi)容讀入到字節(jié)數(shù)組中。

? ? ??9. readLine方法:讀入輸入流內(nèi)容中的一行。

? ? ??10. toBufferedInputStream,toBufferedReader:將輸入轉(zhuǎn)為帶緩存的輸入流。

? ? ??11. toByteArray,toCharArray:將輸入流的內(nèi)容轉(zhuǎn)為字節(jié)數(shù)組、字符數(shù)組。

? ? ??12. toString:將輸入流或數(shù)組中的內(nèi)容轉(zhuǎn)化為字符串。

? ? ??13. write方法:向流里面寫(xiě)入內(nèi)容。

? ? ??14. writeLine方法:向流里面寫(xiě)入一行內(nèi)容。

【代碼示例】

1 /** 2 *IOUtils 操作里邊的內(nèi)容 3 * 4 */ 5 package cn.sxt.test; 6 7 import java.io.File; 8 import java.io.IOException; 9 import java.net.URL; 10 import java.util.ArrayList; 11 import java.util.List; 12 13 import org.apache.commons.io.FileUtils; 14 import org.apache.commons.io.IOUtils; 15 16 public class Test_0404_CommondIO_IOUtils { 17 public static void main(String[] args) throws IOException { 18 File file=new File("poem.txt"); 19 //1、讀取文件 20 String msg=FileUtils.readFileToString(file,"GBK"); 21 System.out.println(msg); 22 23 //2、看文件的大小 24 byte[] datas=FileUtils.readFileToByteArray(file); 25 System.out.println(datas.length); 26 27 //3、逐行讀取 放在容器中 28 List<String> mList=FileUtils.readLines(file,"GBK"); 29 for (String tempString : mList) { 30 System.out.println(tempString); 31 } 32 33 //4、寫(xiě)入 3種寫(xiě)法效果一樣 34 File file2=new File("print.txt"); 35 FileUtils.write(file2, "錦瑟無(wú)端五十弦,一弦一柱思華年。\r\n", "GBK",true);//使用GBK字符集,在文件后面追加 36 FileUtils.writeStringToFile(file2, "莊生曉夢(mèng)迷蝴蝶,望帝春心托杜鵑。\r\n","GBK",true); 37 FileUtils.writeByteArrayToFile(file2, "滄海月明珠有淚,藍(lán)田日暖玉生煙。\r\n".getBytes("GBK"),true); 38 39 List<String> dataList=new ArrayList<String>(); 40 dataList.add("大江東去,浪淘盡,千古風(fēng)流人物。"); 41 dataList.add("故壘西邊,人道是,三國(guó)周郎赤壁。"); 42 dataList.add("亂石穿空,驚濤拍岸,卷起千堆雪。"); 43 44 FileUtils.writeLines(file2, dataList,"---",true);//第3個(gè)參數(shù)是以上3個(gè)字符串的連接符,自定義 45 46 //5、單純的復(fù)制文件 47 FileUtils.copyFile(new File("SongYi.jpg"),new File("Song2.jpg")); 48 //5-2、復(fù)制文件到指定目錄 49 FileUtils.copyFileToDirectory(new File("SongYi.jpg"), new File("dest")); 50 //5-3、文件夾(包括所有子文件)的復(fù)制與 把a(bǔ)文件復(fù)制到b文件夾下 51 FileUtils.copyDirectory(new File("dest"), new File("dest_copy"));//復(fù)制一個(gè)dest文件夾,2個(gè)平級(jí) 52 FileUtils.copyDirectoryToDirectory(new File("dest"), new File("dest2"));//把dest文件夾復(fù)制到dest2目錄下,當(dāng)兒子去 53 54 //5-4、拷貝網(wǎng)絡(luò)地址上一張圖片 55 String url="https://www.baidu.com/img/dong_24ac35d79990cac4c1816710e2802ca0.gif"; 56 FileUtils.copyURLToFile(new URL(url), new File("QingMing.gif")); 57 58 //5-5、復(fù)制網(wǎng)站的源碼 59 String data2=IOUtils.toString(new URL("http://www.baidu.com"),"UTF-8"); 60 System.out.println(data2); 61 } 62 63 64 }

?

轉(zhuǎn)載于:https://www.cnblogs.com/ID-qingxin/p/10660482.html

總結(jié)

以上是生活随笔為你收集整理的[19/04/04-星期四] IO技术_CommonsIO(通用IO,别人造的轮子,FileUtils类 操作文件 IOUtilsl类 操作里边的内容 )...的全部?jī)?nèi)容,希望文章能夠幫你解決所遇到的問(wèn)題。

如果覺(jué)得生活随笔網(wǎng)站內(nèi)容還不錯(cuò),歡迎將生活随笔推薦給好友。