Day34

Commons IO

环境的搭建

到apache(阿帕奇)下载Commos IO的学习文档,学习jar和source源码

主要学习FileUtils

调用FileUtils更加简单

利用FileUtils统计文件、目录的大小
package com.sxt.commons;
import org.apache.commons.io.FileUtils;
import java.io.File;

/**
 * 大小
 */
public class CIOTest01 {
    public static void main(String[] args) {
        //文件的大小
        long len= FileUtils.sizeOf(new File("src/com/sxt/commons/CIOTest01.java"));
        System.out.println(len);
        //目录的大小
        len=FileUtils.sizeOf(new File("C:/Users/86199/IdeaProjects/IO-study03"));
        System.out.println(len);
    }
    
}
利用FileUtils遍历子孙级

利用FileUtils.listFiles返回文件夹下的文件路径

EmptyFileFilter.NOT_EMPTY过滤器,可以过滤空文件

FileFilterUtils.or(new SuffixFileFilter(“java”),new SuffixFileFilter(“class”),EmptyFileFilter.NOT_EMPTY)

是保留java后缀和class后缀的文件且过滤为空的文件

null表示只遍历文件夹下的一层

DirectoryFileFilter.INSTANCE表示要文件夹下的子孙级

for循环遍历: for (File file:files) {
System.out.println(file.getAbsoluteFile());
}

package com.sxt.commons;

import org.apache.commons.io.FileUtils;
import org.apache.commons.io.filefilter.*;

import java.io.File;
import java.io.FileFilter;
import java.util.Collection;

/**
 * 列出子孙级
 */
public class CIOTest02 {
    public static void main(String[] args) {
      Collection<File> files=FileUtils.listFiles(new File("C:/Users/86199/IdeaProjects/IO-study03"),
              EmptyFileFilter.NOT_EMPTY,null);
        for (File file:files) {
            System.out.println(file.getAbsoluteFile());
        }
        System.out.println("=======================================");
        files=FileUtils.listFiles(new File("C:/Users/86199/IdeaProjects/IO-study03"),
                EmptyFileFilter.NOT_EMPTY, DirectoryFileFilter.INSTANCE);
        for (File file:files) {
            System.out.println(file.getAbsoluteFile());
        }
        System.out.println("=======================================");
        files=FileUtils.listFiles(new File("C:/Users/86199/IdeaProjects/IO-study03"),
                new SuffixFileFilter("java"), DirectoryFileFilter.INSTANCE);
        for (File file:files) {
            System.out.println(file.getAbsoluteFile());
        }
        System.out.println("=======================================");
        files=FileUtils.listFiles(new File("C:/Users/86199/IdeaProjects/IO-study03"),
                FileFilterUtils.or(new SuffixFileFilter("java"),new SuffixFileFilter("class"),EmptyFileFilter.NOT_EMPTY), DirectoryFileFilter.INSTANCE);
        for (File file:files) {
            System.out.println(file.getAbsoluteFile());
        }
    }
}
读取文件内容

1、FileUtils.readFileToString读取文件内容:

String msg = FileUtils.readFileToString(new File(“emp.txt”),“UTF-8”);

2、同样通过FileUtils.readFileToByteArray也可以读取到字节数组中:

byte[] datas=FileUtils.readFileToByteArray(new File(“emp.txt”));

3、通过FileUtils.readLines逐行读取到容器通过for循环遍历出来也可以:

List lists=FileUtils.readLines(new File(“emp.txt”),“UTF-8”);

4、还有一个类似于迭代器的FileUtils.lineIterator通过While循环出来:

LineIterator it=FileUtils.lineIterator(new File(“emp.txt”),“UTF-8”);

package com.sxt.commons;

import org.apache.commons.io.FileUtils;
import org.apache.commons.io.LineIterator;

import java.io.File;
import java.io.IOException;
import java.util.List;

/**
 * 读取内容
 */
public class CIOTest03 {
    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);
        System.out.println("================");

        //逐行读取到容器
        List<String> lists=FileUtils.readLines(new File("emp.txt"),"UTF-8");
        for (String list:lists) {
            System.out.println(list);
        }
        System.out.println("================");
        LineIterator it=FileUtils.lineIterator(new File("emp.txt"),"UTF-8");
        while (it.hasNext()){
            System.out.println(it.nextLine());
        }
    }
}
写出文件内容

1、利用 FileUtils.write=FileUtils.writeStringToFile写入文件内容:

FileUtils.write(new File(“happy.txt”),

​ “学习是一件伟大的事业\r”,“UTF-8”);

2、通过缓冲的字节数组写入 FileUtils.writeByteArrayToFile

FileUtils.writeByteArrayToFile(new File(“happy.txt”),
“你会发现是一件很美好的事\r”.getBytes(“UTF-8”),true);

3、逐行写入列表:

FileUtils.writeLines(new File(“happy.txt”),lists,"—",true);

package com.sxt.commons;

import org.apache.commons.io.FileUtils;
import org.apache.commons.io.LineIterator;

import java.io.File;
import java.io.IOException;
import java.util.ArrayList;
import java.util.List;

/**
 * 写出内容
 */
public class CIOTest04 {
    public static void main(String[] args) throws IOException {
        //写出文件
        FileUtils.write(new File("happy.txt"),
                "学习是一件伟大的事业\r","UTF-8");
        FileUtils.writeStringToFile(new File("happy.txt"),
                "需要我们一直坚持\r","UTF-8",true);
        FileUtils.writeByteArrayToFile(new File("happy.txt"),
                "你会发现是一件很美好的事\r".getBytes("UTF-8"),true);

        //写出列表
        List<String> lists=new ArrayList<>();
        lists.add("马云");
        lists.add("马化腾");
        lists.add("弼马温");

        FileUtils.writeLines(new File("happy.txt"),lists,"---",true);
    }
}
拷贝

1、可以拷贝文件内容:

FileUtils.copyFile(new File(“p.png”),new File(“p-copy.png”))

2、可以把文件拷贝到目录里:

FileUtils.copyFileToDirectory(new File(“p.png”),new File(“lib”));

3、可以把目录拷贝到目录:

将lib当作子目录拷贝到lib2
FileUtils.copyDirectoryToDirectory(new File(“lib”),new File(“lib2”));

4、拷贝目录: 将lib打开把里面的内容拷贝到lib2
FileUtils.copyDirectory(new File(“lib”),new File(“lib2”));

5、拷贝URL到文件:

FileUtils.copyURLToFile(new URL(url),new File(“marvel.jpg”));

6、IO拷贝源码:

String datas= IOUtils.toString(new URL(“https://www.163.com”),“gbk”);

package com.sxt.commons;

import org.apache.commons.io.FileUtils;
import org.apache.commons.io.IOUtils;

import java.io.File;
import java.io.IOException;
import java.net.URL;
import java.util.ArrayList;
import java.util.List;

/**
 * 拷贝
 */
public class CIOTest05 {
          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"));
        //拷贝目录到目录,将lib当作子目录拷贝到lib2
        FileUtils.copyDirectoryToDirectory(new File("lib"),new File("lib2"));
        //拷贝目录,将lib打开把里面的内容拷贝到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("https://www.163.com"),"gbk");
        System.out.println(datas);

    }
}

IO is over!

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值