Apache commons-io工具包的使用
Apache基金會介紹
Apache軟件基金會(也就是Apache Software Foundation,簡稱為ASF),是專門為支持開源軟件項目而辦的一個非盈利性組織。在它所支持的Apache項目與子項目中,所發(fā)行的軟件產(chǎn)品都遵循Apache許可證(Apache License)。 官方網(wǎng)址為:www.apache.org 。
很多著名的Java開源項目都來源于這個組織。比如:commons、kafka、lucene、maven、shiro、struts等技術(shù),以及大數(shù)據(jù)技術(shù)中的:hadoop(大數(shù)據(jù)第一技術(shù))、hbase、spark、storm、mahout等。
commons-io工具包
Apache的commons-io工具包中提供了IOUtils/FileUtils,為我們提供了更加簡單、功能更加強(qiáng)大的文件操作和IO流操作功能。非常值得大家學(xué)習(xí)和使用。
下載與添加commons-io包
1.下載地址
https://commons.apache.org/proper/commons-io/download_io.cgi
2.添加jar包
FileUtils類中常用方法的介紹
打開FileUtils的api文檔,我們抽出一些工作中比較常用的方法,進(jìn)行總結(jié)和講解??偨Y(jié)如下:
方法名 | 使用說明 |
---|---|
cleanDirectory | 清空目錄,但不刪除目錄 |
contentEquals | 比較兩個文件的內(nèi)容是否相同 |
copyDirectory | 將一個目錄內(nèi)容拷貝到另一個目錄??梢酝ㄟ^FileFilter過濾需要拷貝的文件 |
copyFile | 將一個文件拷貝到一個新的地址 |
copyFileToDirectory | 將一個文件拷貝到某個目錄下 |
copyInputStreamToFile | 將一個輸入流中的內(nèi)容拷貝到某個文件 |
deleteDirectory | 刪除目錄 |
deleteQuietly | 刪除文件 |
listFiles | 列出指定目錄下的所有文件 |
openInputSteam | 打開指定文件的輸入流 |
readFileToString | 將文件內(nèi)容作為字符串返回 |
readLines | 將文件內(nèi)容按行返回到一個字符串?dāng)?shù)組中 |
size | 返回文件或目錄的大小 |
write | 將字符串內(nèi)容直接寫到文件中 |
writeByteArrayToFile | 將字節(jié)數(shù)組內(nèi)容寫到文件中 |
writeLines | 將容器中的元素的toString方法返回的內(nèi)容依次寫入文件中 |
writeStringToFile | 將字符串內(nèi)容寫到文件中 |
讀取文件內(nèi)容,并輸出到控制臺上(只需一行代碼!)
import java.io.File;
import org.apache.commons.io.FileUtils;
public class TestUtils1 {
public static void main(String[] args) throws Exception {
String content = FileUtils.readFileToString(new File("d:/a.txt"), "gbk");
System.out.println(content);
}
}
使用FileUtils工具類實現(xiàn)目錄拷貝
我們可以使用FileUtils完成目錄拷貝,在拷貝過程中可以通過文件過濾器(FileFilter)選擇拷貝內(nèi)容。
import java.io.File;
import java.io.FileFilter;
import org.apache.commons.io.FileUtils;
public class TestFileUtilsDemo2 {
public static void main(String[] args) throws Exception {
FileUtils.copyDirectory(new File("d:/aaa"), new File("d:/bbb"), new FileFilter() {
@Override
public boolean accept(File pathname) {
// 使用FileFilter過濾目錄和以html結(jié)尾的文件
if (pathname.isDirectory() || pathname.getName().endsWith("html")) {
return true;
} else {
return false;
}
}
});
}
}
IOUtils的妙用
打開IOUtils的api文檔,我們發(fā)現(xiàn)它的方法大部分都是重載的。所以,我們理解它的方法并不是難事。因此,對于方法的用法總結(jié)如下:
方法名 | 使用說明 |
---|---|
buffer | 將傳入的流進(jìn)行包裝,變成緩沖流。并可以通過參數(shù)指定緩沖大小 |
closeQueitly | 關(guān)閉流 |
contentEquals | 比較兩個流中的內(nèi)容是否一致 |
copy | 將輸入流中的內(nèi)容拷貝到輸出流中,并可以指定字符編碼 |
copyLarge | 將輸入流中的內(nèi)容拷貝到輸出流中,適合大于2G內(nèi)容的拷貝 |
lineIterator | 返回可以迭代每一行內(nèi)容的迭代器 |
read | 將輸入流中的部分內(nèi)容讀入到字節(jié)數(shù)組中 |
readFully | 將輸入流中的所有內(nèi)容讀入到字節(jié)數(shù)組中 |
readLine | 讀入輸入流內(nèi)容中的一行 |
toBufferedInputStream,toBufferedReader | 將輸入轉(zhuǎn)為帶緩存的輸入流 |
toByteArray,toCharArray | 將輸入流的內(nèi)容轉(zhuǎn)為字節(jié)數(shù)組、字符數(shù)組 |
toString | 將輸入流或數(shù)組中的內(nèi)容轉(zhuǎn)化為字符串 |
write | 向流里面寫入內(nèi)容 |
writeLine | 向流里面寫入一行內(nèi)容 |
我們沒有必要對每個方法做測試,只是演示一下讀入d:/java.txt文件內(nèi)容到程序中,并轉(zhuǎn)成String對象,打印出來。文章來源:http://www.zghlxwxcb.cn/news/detail-740819.html
IOUtils的使用文章來源地址http://www.zghlxwxcb.cn/news/detail-740819.html
import java.io.*;
import org.apache.commons.io.IOUtils;
public class TestIOUtilsDemo {
public static void main(String[] args) throws Exception {
String content = IOUtils.toString(new FileInputStream("d:/java.txt"),"utf-8");
System.out.println(content);
}
}
到了這里,關(guān)于JAVA深化篇_26——Apache commons-io工具包的使用的文章就介紹完了。如果您還想了解更多內(nèi)容,請在右上角搜索TOY模板網(wǎng)以前的文章或繼續(xù)瀏覽下面的相關(guān)文章,希望大家以后多多支持TOY模板網(wǎng)!