common-io的使用(十二)上

简介: common-io的使用(十二)

一. 为什么出现 common-io?


我们可以通过 字节操作流 InputStream,OutputStream 或者 字符操作流 Reader,Writer 来读取和写入文件内容,进行复制文件,复制文件夹等操作, 但这些操作流程固定,写起来复杂,并且效率较低,能不能有一个工具jar包,来帮我们实现简单的功能呢?


Apache 提供了对 IO流的操作的jar包, common-io.


下载使用版本 2.4


2020061908534926.png


添加 common-io.jar包的依赖,我们主要使用的是 org.apache.commons.io.FileUtils 工具类。


下面,老蝴蝶介绍几个常用的功能。


二. 统计文件和目录的大小,比较文件的内容是否一致


二.一 方法


image.png


二.二 演示


源代码:


20200619085356273.png


二.二.一 统计文件和文件夹的大小


 @Test
    public void sizeTest() throws Exception{
        String filepath="E:"+ File.separator+"ideaWork"+File.separator+"Java2"+File.separator+"fileSrc"
                +File.separator+"Hello3.txt";
        String dirpath="E:"+ File.separator+"ideaWork"+File.separator+"Java2"+File.separator+"fileSrc"
                +File.separator+"a";
        File file=new File(filepath);
        File dirFile=new File(dirpath);
        //文件的大小
        System.out.println("Hello3文件大小:"+FileUtils.sizeOf(file));
        //文件夹的大小
        System.out.println("a文件夹的大小:"+FileUtils.sizeOfDirectory(dirFile));
    }


运行程序,控制台打印输出:


20200619085404116.png


查看源代码和运行结果,会发现 sizeOfDirectory() 会递归查询该文件夹下的所有文件的大小。


二.二.二 比较文件内容是否相同 contentEquals()


修改 data.txt, data2.txt, data3.txt 文件的内容


20200619085500377.png


data.txt 设置内容为:


你好啊,我是两个蝴蝶飞


data2.txt 设置内容为:


你好啊,我是岳泽霖


data3.txt 设置内容为:


你好啊,我是两个蝴蝶飞


data.txt 与 data3.txt 的文件内容相同。


  @Test
    public void contentEqualsTest() throws Exception{
        File file1=new File("E:"+ File.separator+"ideaWork"+File.separator+"Java2"+File.separator+"fileSrc"
                +File.separator+"data.txt");
        File file2=new File("E:"+ File.separator+"ideaWork"+File.separator+"Java2"+File.separator+"fileSrc"
                +File.separator+"data2.txt");
        File file3=new File("E:"+ File.separator+"ideaWork"+File.separator+"Java2"+File.separator+"fileSrc"
                +File.separator+"data3.txt");
        //文件的大小
        System.out.println("文件1与文件2内容是否相同:"+FileUtils.contentEquals(file1,file2)); //false
        System.out.println("文件3与文件2内容是否相同:"+FileUtils.contentEquals(file3,file2)); //false
        System.out.println("文件1与文件3内容是否相同:"+FileUtils.contentEquals(file1,file3));//true
    }


运行程序,控制台打印输出:


20200619085436211.png


三. 读取文件内容


可以直接读取成字符串,也可以读取成字节数组, 可以按行。


三.一 方法


image.png


三.二 演示 读取文件内容


@Test
    public void readTest() throws Exception{
        String filepath="E:"+ File.separator+"ideaWork"+File.separator+"Java2"+File.separator+"fileSrc"
                +File.separator+"Hello3.txt";
        File file=new File(filepath);
        //读出内容字符串
        String content=FileUtils.readFileToString(file,"UTF-8");
        System.out.println("内容:"+content);
        //读出字节
        byte[] bytes=FileUtils.readFileToByteArray(file);
        System.out.println("输出字节内容:"+new String(bytes));
        System.out.println("------------读取行信息---------");
        //按行读取,对每一行进行相应的处理
        List<String> lines=FileUtils.readLines(file,"UTF-8");
        for(String str:lines){
            System.out.println(str);
        }
    }


运行程序,控制台打印输出:


2020061908551015.png

相关文章
|
1月前
|
缓存 Linux API
文件IO和标准IO的区别
文件IO和标准IO的区别
29 2
|
13天前
|
存储 Go C#
【.NET Core】深入理解IO之File类
【.NET Core】深入理解IO之File类
29 6
|
13天前
|
安全 C#
【.NET Core】深入理解IO - 读取器和编写器
【.NET Core】深入理解IO - 读取器和编写器
25 5
|
13天前
|
存储 安全 Unix
【.Net Core】深入理解IO之文件和目录
【.Net Core】深入理解IO之文件和目录
24 4
|
13天前
|
存储 缓存 数据安全/隐私保护
【.NET Core】深入理解IO - FileSteam流
【.NET Core】深入理解IO - FileSteam流
21 2
|
13天前
|
存储 Unix C#
【.NET Core】深入理解IO之Path
【.NET Core】深入理解IO之Path
28 2
|
1月前
|
Java
【JavaEE】IO 操作
【JavaEE】IO 操作
|
8月前
|
Java
java IO接口(Input)用法demo
java IO接口(Input)用法demo
|
10月前
|
IDE Java Apache
commons-io如何添加和常见的用法
commons-io如何添加和常见的用法
450 0
|
11月前
|
编译器 Linux vr&ar
基础IO+文件(三)
基础IO+文件
48 0