CommonsIO 常用操作

多个class文件打包成jar包,多个jar包放在一起组成一个组件,多个组件组成一个框架

CommonsIO就是一个组件,是Apache的一个组件

环境配置

下载地址
http://commons.apache.org/proper/commons-io/download_io.cgi
在这里插入图片描述
下载zip
在这里插入图片描述
在项目里创建一个lib文件夹,将这两个包导入到lib文件夹在这里插入图片描述
idea里选择File-----> project Structure------>Modles ---->Dependencies 单击右边的加号,选择 JARS or directories 将commons-io.jar导入(不是sources.jar ,这个是源码包)

API文档

API文档在zip下的docs文件夹下的index.html

常用操作

FileUtils

General file manipulation utilities.(一般的文件操作工具。)
Facilities are provided in the following areas:

writing to a file(写文件)
reading from a file(读)
make a directory including parent directories (创建一个包含父目录的目录)
copying files and directories (复制文件和目录)
deleting files and directories(删除文件和目录)
converting to and from a URL(转换一个URL)
listing files and directories by filter and extension(按筛选器和扩展名列出文件和目录)
comparing file content(比较文件内容)
file last changed date(文件最后更改日期)
calculating a checksum(计算校验和)

1.listing files and directories by filter and extension(按筛选器和扩展名列出文件和目录)
listFiles(File directory, IOFileFilter fileFilter, IOFileFilter dirFilter)方法 返回值static Collection
参数
File directory:目标文件
后面两个参数是加入筛选器
IOFileFilter fileFilte:IOFileFilter 是一个接口 用来筛选文件
常用实现这个接口的类:EmptyFileFilter 它的两个常量( EMPTY,NOT_EMPTY)
DirectoryFileFilter 它的两个常量(INSTANCE,DIRECTORY) INSTANCE表示文件夹包含含文件
SuffixFileFilter 根据后缀(文件名的结尾)过滤文件。这用于检索特定类型的所有文件。
FileFilterUtils 这个过滤器接受文件(不是目录)。or(IOFileFilter …filters)方法 (表示或者) ,and(IOFileFilter …filters) 方法 (表示与) 返回值都是IOFileFilter

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

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

public class CommonIO01 {
    public static void main(String[] args) {
        //文件的大小
        long len = FileUtils.sizeOf(new File("abc.txt"));
        System.out.println(len);
        //目录的大小
        len= FileUtils.sizeOf(new File("D:\\IdeaProjects\\java1"));   //不用递归,直接获得
        System.out.println(len);

        //列出子孙 三个参数 第一个参数是目标file目录   第二个参数是过滤,比如说不同的后缀  第三个参数文件夹的目录
        Collection<File> files=FileUtils.listFiles(new File("D:\\IdeaProjects\\java1"), EmptyFileFilter.NOT_EMPTY,null);
        for (File file:files){
            System.out.println(file.getAbsolutePath());
        }

        System.out.println("----------------");
        //获取子文件夹下的所有文件
        files=FileUtils.listFiles(new File("D:\\IdeaProjects\\java1"),EmptyFileFilter.NOT_EMPTY, DirectoryFileFilter.INSTANCE);
        for (File file:files){
            System.out.println(file.getAbsolutePath());
        }
         //获取后缀为java子文件夹下的所有文件
        System.out.println("----------------");
        files=FileUtils.listFiles(new File("D:\\IdeaProjects\\java1"),new SuffixFileFilter("java"),DirectoryFileFilter.INSTANCE);
        for (File file:files){
            System.out.println(file.getAbsolutePath());
        }

        System.out.println("----------------");
        //获取后缀为java或者为class 子文件夹下的所有文件
        files=FileUtils.listFiles(new File("D:\\IdeaProjects\\java1"), FileFilterUtils.or(new SuffixFileFilter("java"),new SuffixFileFilter("class"),EmptyFileFilter.NOT_EMPTY),DirectoryFileFilter.INSTANCE);
        for (File file : files) {
            System.out.println(file.getAbsolutePath());
        }

        System.out.println("----------------");
        //获取后缀为java并且不为空 子文件夹下的所有文件
        files=FileUtils.listFiles(new File("D:\\IdeaProjects\\java1"),FileFilterUtils.and(new SuffixFileFilter("class"),EmptyFileFilter.NOT_EMPTY),DirectoryFileFilter.INSTANCE);
        for (File file : files) {
            System.out.println(file.getAbsolutePath());
        }
    }
}
读取文件

常用方法

方法返回值说明
readFileToString(File file, Charset encoding)static String读取一个文件的内容为字符串 encoding参数为字符集
readFileToByteArray(File file)static byte[]读取一个文件的内容为字节数组
readLines(File file, Charset encoding)static List读取一个文件的内容,每一行的内容加入到List
lineIterator(File file, String encoding)static LineIterator返回一个迭代器 可以读取每一行
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 CommonIoRead {
    public static void main(String[] args) throws IOException {
        //读取文件
        
        //字符串读取
        String info= FileUtils.readFileToString(new File("abc.txt"),"UTF-8");
        System.out.println(info);
        
        //字节数组读取
        byte[] data=FileUtils.readFileToByteArray(new File("abc.txt"));
        System.out.println(data.length);
        
        //逐行读取
        List<String> msg=FileUtils.readLines(new File("abc.txt"),"UTF-8");
        for (String m:msg) {
            System.out.println(m);
        }

        LineIterator it=FileUtils.lineIterator(new File("abc.txt"),"UTF-8");
        while (it.hasNext()){
            System.out.println(it.nextLine());
        }
            
    }
}

写文件

常用方法

方法说明
write(File file, CharSequence data, Charset encoding)写入文件 参数file为目标文件,data为写入数据,encoding为字符集
write(File file, CharSequence data, String encoding, boolean append)写入文件 append为是否追加
writeByteArrayToFile(File file, byte[] data)写入文件 参数file为目标文件,data为写入数据的字节数组
writeByteArrayToFile(File file, byte[] data, boolean append)append为是否追加
writeLines(File file, Collection<?> lines)写入文件 参数file为目标文件 line为数据的容器
writeLines(File file, Collection<?> lines, String lineEnding)lineEnding 为写入之后容器内容之间的分隔符
writeLines(File file, String encoding, Collection<?> lines, boolean append)append为是否追加
writeLines(File file, String encoding, Collection<?> lines, String lineEnding)encoding为字符集
import org.apache.commons.io.FileUtils;

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

public class CommonIoWrite {
    public static void main(String[] args) throws IOException {
        FileUtils.write(new File("abc.txt"),"无兄弟不篮球\r\n","UTF-8");
        FileUtils.writeStringToFile(new File("abc.txt"),"无兄弟不篮球\r\n","UTF-8");
        FileUtils.writeByteArrayToFile(new File("abc.txt"),"无兄弟不篮球".getBytes(),true);

        List<String> data=new ArrayList<>();
        data.add("篮球");
        data.add("basketball");
        data.add("crossover");

        FileUtils.writeLines(new File("abc.txt"),data,"---",true);
        
    }

拷贝

常用方法

方法说明
copyFile(File srcFile, File destFile)拷贝文件 srcFile源文件 destFile目标文件
copyFileToDirectory(File srcFile, File destDir)拷贝文件到目录 srcFile源文件 destFile目标目录
copyToDirectory(File src, File destDir)拷贝源文件夹的内容到目标文件夹
copyDirectoryToDirectory(File srcDir, File destDir)拷贝源文件夹的目录到目标文件夹下
copyURLToFile(URL source, File destination)拷贝URL资源到目标文件

还有一个IOUtils的一个方法

static String  toString(InputStream input, Charset encoding) ;     //input是输入流  encoding是字符集
import org.apache.commons.io.FileUtils;
import org.apache.commons.io.IOUtils;

import java.io.File;
import java.io.IOException;
import java.net.URL;

public class CommonIoCopy {
    public static void main(String[] args) throws IOException {
        //复制文件
        FileUtils.copyFile(new File("a.png"),new File("coopy.png"));
        //复制文件到目录
        FileUtils.copyFileToDirectory(new File("a.png"),new File("lib"));
        //复制目录到目录
        FileUtils.copyDirectoryToDirectory(new File("lib"),new File("lib2"));  //是在lib2下创建lib
        //复制目录
        FileUtils.copyDirectory(new File("lib"),new File("lib3"));  //是将lib的内容复制到lib3下
        //拷贝URL  (从网上拷贝一张图片)
        String url = "https://pic2.zhimg.com/v2-7d01cab20858648cbf62333a7988e6d0_qhd.jpg";
        FileUtils.copyURLToFile(new URL(url),new File("marvel.png"));
        //拷贝网页
        String data= IOUtils.toString(new URL("www.163.com"),"gbk");
        System.out.println(data);
    }
}
  • 1
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值