前言:
在工作當中我們往往遇到很多文件的操作,我們也習慣寫一些自己定義的工具類來簡化文件操作,其實apache的commons的FileUtils類就是這樣一個工具類,使用它能大大的簡化我們對文件的操作。
准備工作:
1.下載jar 地址:http://commons.apache.org/proper/commons-io/download_io.cgi
2.把commons-io-2.4.jar 這個文件導入到你的項目中
說明:
1.由於是一個工具類使用都非常的簡單 所以本文只是將其分類,展示它能夠提供給我們什么。
2.習慣看api的可以直接看官方的api 傳送門
3.可以看一看官方的指引 指引傳送門
4.FileUtils只是commons-io的其中一個工具類
分類說明演示:
1.寫 文件/文件夾
/* 寫文件 * 1.這里只列出3種方式全參數形式,api提供部分參數的方法重載 * 2.最后一個布爾參數都是是否是追加模式 * 3.如果目標文件不存在,FileUtils會自動創建 * */ //static void:write(File file, CharSequence data, String encoding, boolean append) FileUtils.write(new File("D:/a/b/cxyapi.txt"), "程序換api","UTF-8",true); //static void:writeLines(File file, Collection<?> lines, boolean append) List<String> lines=new ArrayList<String>(); lines.add("歡迎訪問:");lines.add("www.cxyapi.com"); FileUtils.writeLines(new File("D:/a/b/cxyapi.txt"),lines,true); //static void:writeStringToFile(File file, String data, String encoding, boolean append) FileUtils.writeStringToFile(new File("D:/a/b/cxyapi.txt"), "作者:cxy", "UTF-8",true);
2.讀 文件/文件夾
//讀文件 //static String:readFileToString(File file, String encoding) System.out.println(FileUtils.readFileToString(new File("D:/a/b/cxyapi.txt"), "UTF-8")); //static List<String>:readLines(File file, String encoding) System.out.println(FileUtils.readLines(new File("D:/a/b/cxyapi.txt"), "UTF-8")); //返回一個list
3.刪除 文件/文件夾
//刪除目錄 //static void:deleteDirectory(File directory) FileUtils.deleteDirectory(new File("D:/not/cxyapi")); //static boolean:deleteQuietly(File file) FileUtils.deleteQuietly(new File("D:/not/cxyapi")); //文件夾不是空任然可以被刪除,永遠不會拋出異常
4.移動 文件/文件夾
//移動文件 或 文件夾 //static void:moveDirectory(File srcDir, File destDir) FileUtils.moveDirectory(new File("D:/cxyapi1"), new File("D:/cxyapi2")); //注意這里 第二個參數文件不存在會引發異常 //static void:moveDirectoryToDirectory(File src, File destDir, boolean createDestDir) FileUtils.moveDirectoryToDirectory(new File("D:/cxyapi2"), new File("D:/cxyapi3"), true); /* 上面兩個方法的不同是: * moveDirectory:D:/cxyapi2里的內容是D:/cxyapi1的內容。 * moveDirectoryToDirectory:D:/cxyapi2文件夾移動到到D:/cxyapi3里 * * 下面的3個都比較簡單沒提供示例,只提供了api * 其中moveToDirectory和其他的區別是 它能自動識別操作文件還是文件夾 */ //static void:moveFileToDirectory(srcFile, destDir, createDestDir) //static void:moveFile(File srcFile, File destFile) //static void:moveToDirectory(File src, File destDir, boolean createDestDir)
5.copy
//結果是cxyapi和cxyapi1在同一目錄 FileUtils.copyDirectory(new File("D:/cxyapi"), new File("D:/cxyapi1")); //結果是將cxyapi拷貝到cxyapi2下 FileUtils.copyDirectoryToDirectory(new File("D:/cxyapi"), new File("D:/cxyapi2")); //拷貝文件 FileUtils.copyFile(new File("d:/cxyapi.xml"), new File("d:/cxyapi.xml.bak")); //拷貝文件到目錄中 FileUtils.copyFileToDirectory(new File("d:/cxyapi.xml"), new File("d:/cxyapi")); //拷貝url到文件 FileUtils.copyURLToFile(new URL("http://www.cxyapi.com/rss/cxyapi.xml"), new File("d:/cxyapi.xml"));
6.其他
//判斷是否包含文件或者文件夾 boolean b=FileUtils.directoryContains(new File("D:/cxyapi"), new File("D:/cxyapi/cxyapi.txt")); System.out.println(b); //獲得臨時目錄 和 用戶目錄 System.out.println(FileUtils.getTempDirectoryPath()); System.out.println(FileUtils.getUserDirectoryPath()); //打開流,如果不存在創建文件及其目錄結構 //第二個參數表示 文件流是否是追加方式 FileOutputStream fos=FileUtils.openOutputStream(new File("D:/cxyapi/cxyapi.txt"),true); fos.write(new String("歡迎訪問:www.cxyapi.com\r\n").getBytes()); fos.close(); //文件 或 文件夾大小 System.out.println(FileUtils.sizeOf(new File("D:/cxyapi"))); System.out.println(FileUtils.sizeOfDirectory(new File("D:/cxyapi")));
原文:http://snkcxy.iteye.com/blog/1845862