IO组件之Commons 基本使用步骤
Posted liuzeyu12a
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了IO组件之Commons 基本使用步骤相关的知识,希望对你有一定的参考价值。
引言
Java 组件 :
组件是抽象的概念而已,通俗的说是一些符合某种规范的类组合在一起就构成了组件。他可以提供某些特定的功能,可以理解为是由多个jar 包构成的 。
简单理解为多个.class文件构成jar包 ,多个jar包构成组件 ,多个组件构成框架。
Commons 如何使用 ?
1、首先我们得到 http://apache.org/ ,这Commons组件使用包,这个网站是Apache软件基金组织 ,由世界上各大互联网公司提供了大量的前沿的组件和框架。
2、选择IO的使用组件
3、下载1.7+的即可
4、Winodws选择第二个下载,Linuix 下载第一个。
5、下载完后解压,将这两个拿过来用,一个是源码,一个是使用工具包
6、然后呢,就能用了。我们来展示一下基本的操作
1)统计文件大小及目录大小
1 package 测试; 2 3 import java.io.File; 4 5 import org.apache.commons.io.FileUtils; 6 7 public class CIOTest01 { 8 9 public static void main(String[] args) { 10 11 //文件的大小 12 long len = FileUtils.sizeOf(new File("IO流之Commons/测试/CIOTest01.java")); 13 System.out.println(len); 14 //目錄的大小 15 len = FileUtils.sizeOf(new File("IO流")); 16 System.out.println(len); 17 } 18 }
2)遍历文件及子孙级目录
1 package 测试; 2 3 import java.io.File; 4 import java.util.Collection; 5 6 import org.apache.commons.io.FileUtils; 7 import org.apache.commons.io.filefilter.DirectoryFileFilter; 8 import org.apache.commons.io.filefilter.EmptyFileFilter; 9 import org.apache.commons.io.filefilter.FileFilterUtils; 10 import org.apache.commons.io.filefilter.SuffixFileFilter; 11 12 /** 13 * 列出文件的子孫級 14 * @author liuzeyu12a 15 * 16 */ 17 public class CIOTest02 { 18 19 public static void main(String[] args) { 20 //參數2表示對文件的過濾,不爲空,參數3表示對目錄的過濾 21 Collection<File> collects=FileUtils.listFiles( 22 new File("IO流之Commons\\测试"), EmptyFileFilter.NOT_EMPTY, null); 23 for (File file : collects) { 24 System.out.println(file); 25 } 26 27 System.out.println("--------列出子孫級目錄----------"); 28 collects = FileUtils.listFiles(new File("E:/JAVA/北京尚学堂/08_IO流技术/003_code/000-005"), 29 EmptyFileFilter.NOT_EMPTY, DirectoryFileFilter.INSTANCE); //列出子孫級目錄文件 30 for (File file : collects) { 31 System.out.println(file); 32 } 33 34 System.out.println("--------列出以後綴名爲java的文件----------"); 35 collects = FileUtils.listFilesAndDirs( 36 new File("E:/JAVA/北京尚学堂/08_IO流技术/003_code/000-005"), 37 new SuffixFileFilter("java"), DirectoryFileFilter.INSTANCE); 38 for (File file : collects) { 39 System.out.println(file); 40 } 41 42 System.out.println("--------列出以後綴名爲java,class的文件----------"); 43 collects = FileUtils.listFilesAndDirs( 44 new File("E:/JAVA/北京尚学堂/08_IO流技术/003_code/000-005"), 45 FileFilterUtils.or(new SuffixFileFilter("java"), 46 new SuffixFileFilter("class")) 47 ,DirectoryFileFilter.INSTANCE); 48 for (File file : collects) { 49 System.out.println(file); 50 } 51 52 System.out.println("----------列出以java結尾且不爲空的文件-------------"); 53 collects = FileUtils.listFilesAndDirs(new File("E:/JAVA/北京尚学堂/08_IO流技术/003_code/000-005"), 54 new FileFilterUtils().and( 55 new SuffixFileFilter("java"),EmptyFileFilter.NOT_EMPTY), 56 DirectoryFileFilter.INSTANCE); 57 for (File file : collects) { 58 System.out.println(file); 59 } 60 } 61 }
3)读取文件,按行读取
1 package 测试; 2 3 import java.io.File; 4 import java.io.IOException; 5 import java.util.List; 6 7 import org.apache.commons.io.FileUtils; 8 import org.apache.commons.io.LineIterator; 9 10 /** 11 * 讀取文件 ,按逐行讀取 12 * @author liuzeyu12a 13 * 14 */ 15 public class CIOTest03 { 16 17 public static void main(String[] args) throws IOException { 18 String msg = FileUtils.readFileToString(new File("print.txt"),"gbk"); 19 System.out.println(msg); 20 System.out.println("---------讀取到字節----------"); 21 byte[]datas = FileUtils.readFileToByteArray(new File("print.txt")); 22 System.out.println(new String(datas,0,datas.length)); 23 24 System.out.println("-------------逐行讀取------------"); 25 List<String> msgs = FileUtils.readLines(new File("cde.txt"), "gbk"); 26 for (String string : msgs) { 27 System.out.println(string); 28 } 29 30 System.out.println("-------------使用迭代器遍歷------------"); 31 LineIterator iter = FileUtils.lineIterator( 32 new File("cde.txt"), "gbk"); 33 while(iter.hasNext()) { 34 System.out.println(iter.nextLine()); 35 } 36 } 37 }
4)写出内容,可以按行写出
1 package 测试; 2 3 import java.io.File; 4 import java.io.IOException; 5 import java.util.ArrayList; 6 import java.util.List; 7 8 import org.apache.commons.io.FileUtils; 9 10 /** 11 * 寫出內容 12 * @author liuzeyu12a 13 * 14 */ 15 public class CIOTest04 { 16 17 public static void main(String[] args) throws IOException { 18 19 FileUtils.write(new File("haha.txt"), "xixxixixixi ", "gbk");//將原有文件刪除,換成最新寫入 20 21 //以字符串形式寫入幷追加 22 FileUtils.writeStringToFile(new File("haha.txt"), "嘿嘿嘿 ", "gbk", true); 23 24 //以字節形式寫入幷追加 25 FileUtils.writeByteArrayToFile(new File("haha.txt"), "wowowo ".getBytes("gbk"), true); 26 27 //寫出列表 28 List<String> msg = new ArrayList<>(); 29 msg.add("劉澤煜"); 30 msg.add("馬雲"); 31 32 //參數3屬於對象分割符 33 FileUtils.writeLines(new File("haha.txt"), msg, "????", true); 34 } 35 }
5)文件和目录的拷贝动作
1 package 测试; 2 3 import java.io.File; 4 import java.io.IOException; 5 import java.net.URL; 6 7 import org.apache.commons.io.FileUtils; 8 import org.apache.commons.io.IOUtils; 9 10 /** 11 * 文件的拷貝 12 * @author liuzeyu12a 13 * 14 */ 15 public class CIOTest05 { 16 17 public static void main(String[] args) throws IOException { 18 19 //複製文件 20 FileUtils.copyFile(new File("薛之谦 - 你还要我怎样.mp3"), 21 new File("copy-薛之谦 - 你还要我怎样.mp3")); 22 23 //複製文件到目錄 24 FileUtils.copyFileToDirectory(new File("薛之谦 - 你还要我怎样.mp3"), new File("lib")); 25 26 //複製目錄到目錄 27 FileUtils.copyDirectoryToDirectory(new File("lib"), new File("dest")); 28 29 //複製目錄,在相同的目錄下生成lib2目錄 30 FileUtils.copyDirectory(new File("lib"), new File("lib2")); 31 32 //拷貝Url內容 33 String url = "https://pic2.zhimg.com/v2-7d01cab20858648cbf62333a7988e6d0_qhd.jpg"; 34 FileUtils.copyURLToFile(new URL(url), new File("copyUrl.jpg")); 35 String msg = IOUtils.toString(new URL("http://www.163.com"),"GBK"); 36 System.out.println(msg); 37 38 } 39 }
以上是关于IO组件之Commons 基本使用步骤的主要内容,如果未能解决你的问题,请参考以下文章
Apache Commons IO之IOUtils优雅操作流