Apache-commons-io包的使用及常用方法
首先,我們要下載FileUtils相關的Apache-commons-io jar包以及api文件。FileUtils類庫的下載頁面在:
http://commons.apache.org/proper/commons-io/download_io.cgi
FieUtils類中常用方法的介紹
開啟FileUtils的api文件,我們抽出一些工作中比較常用的方法,進行總結和講解。總結如下:
cleanDirectory:清空目錄,但不刪除目錄。
contentEquals:比較兩個檔案的內容是否相同。
copyDirectory:將一個目錄內容拷貝到另一個目錄。可以通過FileFilter過濾需要拷貝的 檔案。
copyFile:將一個檔案拷貝到一個新的地址。
copyFileToDirectory:將一個檔案拷貝到某個目錄下。
copyInputStreamToFile:將一個輸入流中的內容拷貝到某個檔案。
deleteDirectory:刪除目錄。
deleteQuietly:刪除檔案。
listFiles:列出指定目錄下的所有檔案。
openInputSteam:開啟指定檔案的輸入流。
readFileToString:將檔案內容作為字串返回。
readLines:將檔案內容按行返回到一個字串陣列中。
size:返回檔案或目錄的大小。
write:將字串內容直接寫到檔案中。
writeByteArrayToFile:將位元組陣列內容寫到檔案中。
writeLines:將容器中的元素的toString方法返回的內容依次寫入檔案中。
writeStringToFile:將字串內容寫到檔案中。
示例:
1、統計檔案或者目錄大小
public static void main(String[] args) { //檔案大小 long len =FileUtils.sizeOf(new File(".../../../XX.java")); System.out.println(len); //目錄大小 len = FileUtils.sizeOf(new File("D:/../../../study04")); System.out.println(len); }
2、列出子孫級目錄或檔案,帶有過濾功能
public static void main(String[] args) { Collection<File> files =FileUtils.listFiles(new File("D:\\java300\\IO_study04"), EmptyFileFilter.NOT_EMPTY, null); for (File file : files) { System.out.println(file.getAbsolutePath()); } System.out.println("---------------------"); files =FileUtils.listFiles(new File("D:\\..\\IO_study04"), EmptyFileFilter.NOT_EMPTY, DirectoryFileFilter.INSTANCE); for (File file : files) { System.out.println(file.getAbsolutePath()); } System.out.println("---------------------"); files =FileUtils.listFiles(new File("D:\\..\\IO_study04"), new SuffixFileFilter("java"), DirectoryFileFilter.INSTANCE); for (File file : files) { System.out.println(file.getAbsolutePath()); } System.out.println("---------------------"); files =FileUtils.listFiles(new File("D:\\..\\IO_study04"), FileFilterUtils.or(new SuffixFileFilter("java"), new SuffixFileFilter("class"),EmptyFileFilter.EMPTY), DirectoryFileFilter.INSTANCE); for (File file : files) { System.out.println(file.getAbsolutePath()); } System.out.println("---------------------"); files =FileUtils.listFiles(new File("D:\\..\\IO_study04"), FileFilterUtils.and(new SuffixFileFilter("java"), EmptyFileFilter.NOT_EMPTY), DirectoryFileFilter.INSTANCE); for (File file : files) { System.out.println(file.getAbsolutePath()); } }
3、讀物檔案
public static void main(String[] args) throws IOException { //讀取檔案 String msg =FileUtils.readFileToString(new File("emp.txt"),"UTF-8"); System.out.println(msg); byte[] datas = FileUtils.readFileToByteArray(new File("emp.txt")); System.out.println(datas.length); //逐行讀取 List<String> msgs= FileUtils.readLines(new File("emp.txt"),"UTF-8"); for (String string : msgs) { System.out.println(string); } LineIterator it =FileUtils.lineIterator(new File("emp.txt"),"UTF-8"); while(it.hasNext()) { System.out.println(it.nextLine()); } }
4、寫出內容
public static void main(String[] args) throws IOException { //寫出檔案 FileUtils.write(new File("happy.sxt"), "學習是一件偉大的事業\r\n","UTF-8"); FileUtils.writeStringToFile(new File("happy.sxt"), "學習是一件辛苦的事業\r\n","UTF-8",true); FileUtils.writeByteArrayToFile(new File("happy.sxt"), "學習是一件幸福的事業\r\n".getBytes("UTF-8"),true); //寫出列表 List<String> datas =new ArrayList<String>(); datas.add("馬雲"); datas.add("馬化騰"); FileUtils.writeLines(new File("happy.sxt"), datas,"--------------",true); }
5、複製檔案
public static void main(String[] args) throws IOException { //複製檔案 //FileUtils.copyFile(new File("p.png"),new File("p-copy.png")); //複製檔案到目錄 //FileUtils.copyFileToDirectory(new File("p.png"),new File("lib")); //複製目錄到目錄 //FileUtils.copyDirectoryToDirectory(new File("lib"),new File("lib2")); //複製目錄 //FileUtils.copyDirectory(new File("lib"),new File("lib2")); //拷貝URL內容 //String url = "https://pic2.zhimg.com/v2-7d01cab20858648cbf62333a7988e6d0_qhd.jpg"; //FileUtils.copyURLToFile(new URL(url), new File("marvel.jpg")); String datas =IOUtils.toString(new URL("http://www.163.com"), "gbk"); System.out.println(datas); }