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 }
View Code

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 }
View Code

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 }
View Code

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 }
View Code

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 }
View Code

以上是关于IO组件之Commons 基本使用步骤的主要内容,如果未能解决你的问题,请参考以下文章

Apache Commons IO之IOUtils优雅操作流

文件上传之 commons-fileupload

文件上传之 commons-fileupload

jar包下载步骤 Commons IO-2.6

Apache Commons IO之FileUtils的常用方法

struts2学习笔记之十:文件上传