JAVA深化篇_26——Apache commons-io工具包的使用

Apache commons-io工具包的使用

Apache基金会介绍

Apache软件基金会(也就是Apache Software Foundation,简称为ASF),是专门为支持开源软件项目而办的一个非盈利性组织。在它所支持的Apache项目与子项目中,所发行的软件产品都遵循Apache许可证(Apache License)。 官方网址为:www.apache.org 。

很多著名的Java开源项目都来源于这个组织。比如:commons、kafka、lucene、maven、shiro、struts等技术,以及大数据技术中的:hadoop(大数据第一技术)、hbase、spark、storm、mahout等。

commons-io工具包

Apache的commons-io工具包中提供了IOUtils/FileUtils,为我们提供了更加简单、功能更加强大的文件操作和IO流操作功能。非常值得大家学习和使用。

下载与添加commons-io包

1.下载地址

https://commons.apache.org/proper/commons-io/download_io.cgi

2.添加jar包

FileUtils类中常用方法的介绍

打开FileUtils的api文档,我们抽出一些工作中比较常用的方法,进行总结和讲解。总结如下:

方法名 使用说明
cleanDirectory 清空目录,但不删除目录
contentEquals 比较两个文件的内容是否相同
copyDirectory 将一个目录内容拷贝到另一个目录。可以通过FileFilter过滤需要拷贝的文件
copyFile 将一个文件拷贝到一个新的地址
copyFileToDirectory 将一个文件拷贝到某个目录下
copyInputStreamToFile 将一个输入流中的内容拷贝到某个文件
deleteDirectory 删除目录
deleteQuietly 删除文件
listFiles 列出指定目录下的所有文件
openInputSteam 打开指定文件的输入流
readFileToString 将文件内容作为字符串返回
readLines 将文件内容按行返回到一个字符串数组中
size 返回文件或目录的大小
write 将字符串内容直接写到文件中
writeByteArrayToFile 将字节数组内容写到文件中
writeLines 将容器中的元素的toString方法返回的内容依次写入文件中
writeStringToFile 将字符串内容写到文件中

读取文件内容,并输出到控制台上(只需一行代码!)

import java.io.File;
import org.apache.commons.io.FileUtils;
public class TestUtils1 {
    public static void main(String[] args) throws Exception {
        String content = FileUtils.readFileToString(new File("d:/a.txt"), "gbk");
        System.out.println(content);
    }
}

使用FileUtils工具类实现目录拷贝

我们可以使用FileUtils完成目录拷贝,在拷贝过程中可以通过文件过滤器(FileFilter)选择拷贝内容。

import java.io.File;
import java.io.FileFilter;
import org.apache.commons.io.FileUtils;


public class TestFileUtilsDemo2 {
    public static void main(String[] args) throws Exception {
        FileUtils.copyDirectory(new File("d:/aaa"), new File("d:/bbb"), new FileFilter() {
            @Override
            public boolean accept(File pathname) {
                // 使用FileFilter过滤目录和以html结尾的文件
                if (pathname.isDirectory() || pathname.getName().endsWith("html")) {
                    return true;
                } else {
                    return false;
                }
            }
        });
    }
}

IOUtils的妙用

打开IOUtils的api文档,我们发现它的方法大部分都是重载的。所以,我们理解它的方法并不是难事。因此,对于方法的用法总结如下:

方法名 使用说明
buffer 将传入的流进行包装,变成缓冲流。并可以通过参数指定缓冲大小
closeQueitly 关闭流
contentEquals 比较两个流中的内容是否一致
copy 将输入流中的内容拷贝到输出流中,并可以指定字符编码
copyLarge 将输入流中的内容拷贝到输出流中,适合大于2G内容的拷贝
lineIterator 返回可以迭代每一行内容的迭代器
read 将输入流中的部分内容读入到字节数组中
readFully 将输入流中的所有内容读入到字节数组中
readLine 读入输入流内容中的一行
toBufferedInputStream,toBufferedReader 将输入转为带缓存的输入流
toByteArray,toCharArray 将输入流的内容转为字节数组、字符数组
toString 将输入流或数组中的内容转化为字符串
write 向流里面写入内容
writeLine 向流里面写入一行内容

我们没有必要对每个方法做测试,只是演示一下读入d:/sxt.txt文件内容到程序中,并转成String对象,打印出来。

IOUtils的使用

import java.io.*;
import org.apache.commons.io.IOUtils;
public class TestIOUtilsDemo {
  public static void main(String[] args) throws Exception {
    String content = IOUtils.toString(new FileInputStream("d:/sxt.txt"),"utf-8");
    System.out.println(content);
   }
}

你可能感兴趣的:(JAVA,基础深化和提高,java,apache,开发语言)