pom文件導入依賴import org.apache.commons.io.FileUtils;
<dependency>
<groupId>commons-io</groupId>
<artifactId>commons-io</artifactId>
<version>2.5</version>
</dependency>
https://blog.csdn.net/quanzhanjavabiji/article/details/73936240
FieUtils類中常用方法的介紹
打開FileUtils的api文檔,我們抽出一些工作中比較常用的方法,進行總結和講解。總結如下:
cleanDirectory:清空目錄,但不刪除目錄
contentEquals:比較兩個文件的內容是否相同
copyDirectory:將一個目錄內容拷貝到另一個目錄。可以通過FileFilter過濾需要拷貝的文件。
copyFile:將一個文件拷貝到一個新的地址
copyFileToDirectory:將一個文件拷貝到某個目錄下
copyInputStreamToFile:將一個輸入流中的內容拷貝到某個文件
deleteDirectory:刪除目錄
deleteQuietly:刪除文件
listFiles:列出指定目錄下的所有文件
openInputSteam:打開指定文件的輸入流
readFileToString:將文件內容作為字符串返回
readLines:將文件內容按行返回到一個字符串數組中
size:返回文件或目錄的大小
write:將字符串內容直接寫到文件中
writeByteArrayToFile: 將字節數組內容寫到文件中
writeLines:將容器中的元素的toString方法返回的內容依次寫入文件中
writeStringToFile:將字符串內容寫到文件中
代碼演示
【示例1】:讀出某個文件的內容,並打印在控制台上(只需一行代碼!)
package com.bjsxt.test.fileutils;
import java.io.File;
import org.apache.commons.io.FileUtils;
public class Demo01 {
public static void main(String[] args) throws Exception {
String content = FileUtils.readFileToString(new File("d:/a.txt"),"gbk");
System.out.println(content);
}
}
示例1 運行效果圖
【示例2】:目錄拷貝,並且使用FileFilter過來目錄和文件名字html結尾的文件。
package com.bjsxt.test.fileutils;
import java.io.File;
import java.io.FileFilter;
import org.apache.commons.io.FileUtils;
public class Demo02 {
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) {
//拷貝目錄或html結尾的文件
if(pathname.isDirectory()||pathname.getName().endsWith("html")){
return true;
}else{
return false;
}
}
});
}
}
示例2 目錄拷貝結果圖
IOUtils妙用
打開IOUtils的api文檔,我們發現他的方法大部分都是重載的。所以,我們理解他的方法並不是難事。因此,對於他方法的用法總結如下:
buffer方法:將傳入的流進行包裝,變成緩沖流。並可以通過參數指定緩沖大小。
closeQueitly方法:關閉流
contentEquals方法:比較兩個流中的內容是否一致
copy方法:將輸入流中的內容拷貝到輸出流中,並可以指定字符編碼。
copyLarge方法:將輸入流中的內容拷貝到輸出流中,適合大於2G內容的拷貝。
lineIterator方法:返回可以迭代每一行內容的迭代器
read方法:將輸入流中的部分內容讀入到字節數組中
readFully方法:將輸入流中的所有內容讀入到字節數組中
readLine方法:讀入輸入流內容中的一行
toBufferedInputStream,toBufferedReader:將輸入轉為帶緩存的輸入流
toByteArray,toCharArray:將輸入流的內容轉為字節數組、字符數組。
toString:將輸入流或數組中的內容轉化為字符串
write方法:向流里面寫入內容
writeLine方法:向流里面寫入一行內容
我們沒有必要對每個方法做測試,只是演示一下讀入d:/a.txt文件內容到程序中,並轉成String對象,打印出來。
package com.bjsxt.test.fileutils;
import java.io.*;
import org.apache.commons.io.IOUtils;
public class Demo03 {
public static void main(String[] args) throws Exception {
String content = IOUtils.toString(new FileInputStream("d:/a.txt"),"gbk");
System.out.println(content);
}
}
readLines
readLines方法可以從流中讀取內容,並轉換為String的list
readLines(inputstream) readLines(inputstream,charset) readLines(inputstream,encoding) readLines(reader)
這個方法極大簡化了之前原始的讀取方法:
@Test public void readLinesTest(){ try{ InputStream is = new FileInputStream("D://test1.txt"); List<String> lines = IOUtils.readLines(is); for(String line : lines){ System.out.println(line); } } catch (FileNotFoundException e) { e.printStackTrace(); } catch (IOException e) { e.printStackTrace(); } }