檔案操作工具類 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); |
*以下方法無效,不知道什麼原因,帶
FileUtils.writeLines(new File("D:/a/b/cxyapi.txt"),lines,true); |
*寫入一行資料,如果已經有值會替換。
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拷貝到mm下a.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:ss:SSS"); //最後三個大寫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 |