1. 程式人生 > >檔案操作工具類 FileUtils常用方法

檔案操作工具類 FileUtils常用方法

檔案操作工具類(FileUtils

使用該工具類的前提是專案裡匯入commons-io 包

import org.apache.commons.io.FileUtils;

 List<String> lines=new ArrayList<String>();  

lines.add("歡迎訪問:");

lines.add("www.cxyapi.com"); 

*如果沒有檔案會自動建立,並且將集合元素以行來劃分,多次寫入會覆蓋原有內容。

FileUtils.writeLines(new File("D:/a/b/cxyapi.txt"),lines);

*以下方法無效,不知道什麼原因,帶

boolean的這種都無效

FileUtils.writeLines(new File("D:/a/b/cxyapi.txt"),linestrue);

*寫入一行資料,如果已經有值會替換。

FileUtils.writeStringToFile(new File("D:/a/b/cxyapi.txt"), "作者:cxy", "UTF-8");

 *讀取檔案資料,以字串返回,每行後加一個\r\n在控制檯顯示,所以可以以下邊的辦法轉為陣列

String aString = FileUtils.readFileToString(new File("D:/a/b/cxyapi.txt"), "UTF-8");

String[] a = aString.split("\\r\\n"); //將檔案內容按行為單位轉換為字串陣列

* 讀取檔案資料,以字串集合返回

List<String> list = FileUtils.readLines(new File("D:/a/b/cxyapi.txt"), "UTF-8");

 * 該方法會將b資料夾刪掉,不管b下是否有內容,如果b不存在也不報錯

FileUtils.deleteDirectory(new File("D:/a/b"));

  * a資料夾下內容拷貝到ee資料夾下,如果a不存在則報異常,ee不存在則會新建

 FileUtils.moveDirectory(new File("D:/b/c"), new File("D:/b/mm/ff"));

 * cc資料夾拷貝到3資料夾下,與上邊不同的是,cc資料夾會存在,也是前者沒有會報錯,後者沒有會新建

FileUtils.moveDirectoryToDirectory(new File("D:/b/cc"), new File("D:/b/3"), true);

* 此方法將mm下(不包括mm)所有的資料夾及檔案複製到3下,如果有同名資料夾則合併,如果有同名檔案則替換

FileUtils.copyDirectory(new File("D:/b/mm"), new File("D:/b/3"));

* 此方法將mm下(包括mm)所有的資料夾及檔案複製到3下,如果有同名資料夾則合併,如果有同名檔案則替換

FileUtils.copyDirectoryToDirectory(new File("D:/b/mm"), new File("D:/b/3"));

* (常用)此方法將b資料夾下a.doc拷貝到mma.doc,前者不存在會報錯,後者不存在會新建,如果後者存在同名檔案則替換

* 另外如果後者為a.xml等不同字尾的檔案,程式仍不報錯,但檔案內容亂碼

FileUtils.copyFile(new File("d:/b/a.doc"), new File("d:/b/mm/a.doc"));

FileUtils.copyFile(new File("d:/b/a.doc"), new File("d:/b/mm","a.doc"));//與上邊功能一樣

* 此方法將b資料夾下的a.doc拷貝到b/3mm資料夾下,如果有同名檔案則替換,前者沒有報錯,後者沒有新建

FileUtils.copyFileToDirectory(new File("d:/b/a.doc"), new File("d:/b/3mm"));

 * 此方法可以將任何網址的後臺頁面內容拷貝到a.xml檔案內,如果後者存在則替換,不存在則新建,前者不存在則報錯,網頁訪問出錯(404等)則不報錯

FileUtils.copyURLToFile(new URL("http://www.baidu.com"), new File("d:/b/a.xml"));

* 判斷兩個檔案內容是否相同,如果兩者都不存在仍認定為相同,如果型別不同(檔案與資料夾相比則報錯),此方法只能比較檔案,

* 不能用於資料夾比較,但是該方法感覺不穩定,總是瞎報錯,明明內容一樣,非說false

boolean b=FileUtils.contentEquals(new File("D:/b/a.doc"), new File("D:/b/mm/c.doc"));

* 清理3資料夾下所有內容(有了它,再也不需要寫遞迴方法了吧?)

FileUtils.cleanDirectory(new File("d:/b/3"));

* 可刪除檔案,也可以刪除資料夾,刪除3資料夾,包括子檔案及資料夾(有了它,再也不需要寫遞迴方法了吧?)

FileUtils.forceDelete(new File("d:/b/a.doc"));

* 刪除3資料夾,包括子檔案及資料夾(有了它,再也不需要寫遞迴方法了吧?)可刪除資料夾也可以刪除檔案

 FileUtils.deleteDirectory(new File("d:/b/3"));

* 該檔案是否在該時間之前建立(isFileOlder)

* 該檔案是否在該時間之後建立(isFileNewer)

 String string="2016-12-20 10:00:00.023";

SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd HH:mm:ssSSS");  //最後三個大寫SSS代表毫秒,寫1個表示前邊都不補0,寫兩個只有是兩位0補全

b= FileUtils.isFileOlder(new File("D:/b/a.doc"),sdf.parse(string));

b= FileUtils.isFileNewer(new File("D:/b/a.doc"),sdf.parse(string))

* 只能針對於目錄資料夾,不能檢視檔案大小(檢視檔案是file.length() 例如:new File("d:/b/a.xml").length())

long a = FileUtils.sizeOfDirectory(new File("d:/b")); //單位為位元組B