侧边栏壁纸
博主头像
coydone博主等级

记录学习,分享生活的个人站点

  • 累计撰写 306 篇文章
  • 累计创建 51 个标签
  • 累计收到 0 条评论

目 录CONTENT

文章目录

Apache IO包

coydone
2021-02-27 / 0 评论 / 0 点赞 / 367 阅读 / 2,642 字 / 正在检测是否收录...
温馨提示:
本文最后更新于 2022-05-01,若内容或图片失效,请留言反馈。部分素材来自网络,若不小心影响到您的利益,请联系我们删除。

JDK中提供的文件操作相关的类,但是功能都非常基础,进行复杂操作时需要做大量编程工作。实际开发中,往往需要你自己动手编写相关的代码,尤其在遍历目录文件时,经常用到递归,非常繁琐。Apache-commons 工具包中提供了IOUtils/FileUtils,可以让我们非常方便的对文件和目录进行操作。

Apache IOUtils和FileUtils类库为我们提供了更加简单、功能更加强大的文件操作和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包

下载地址:https://commons.apache.org/proper/commons-io/download_io.cgi

IDEA中项目中添加jar包:

FileUtils的使用

FileUtils类中常用方法:

  • cleanDirectory():清空目录,但不删除目录。

  • contentEquals():比较两个文件的内容是否相同。

  • copyDirectory():将一个目录内容拷贝到另一个目录。可以通过FileFilter过滤需要拷贝的文件。

  • copyFile():将一个文件拷贝到一个新的地址。

  • copyFileToDirectory():将一个文件拷贝到某个目录下。

  • copyInputStreamToFile():将一个输入流中的内容拷贝到某个文件。

  • deleteDirectory():删除目录。

  • deleteQuietly():删除文件。

  • listFiles():列出指定目录下的所有文件。

  • openlnputSteam():打开指定文件的输入流。

  • readFileToString():将文件内容作为字符串返回。

  • readLines():将文件内容按行返回到一个字符串数组中。

  • size():返回文件或目录的大小。

  • write():将字符串内容直接写到文件中。

  • writeByteArrayToFile():将字节数组内容写到文件中。

  • writeLines():将容器中的元素的toString()方法返回的内容依次写入文件中。

  • writeStringToFile():将字符串内容写到文件中。

读取文本文件中的内容:

import org.apache.commons.io.FileUtils;

import java.io.File;
import java.io.IOException;

public class Test {
    public static void main(String[] args) throws IOException {
        String content = FileUtils.readFileToString(new File("d:/a.txt"),"utf-8");
        System.out.println(content);
    }
}

文件拷贝:

import org.apache.commons.io.FileUtils;

import java.io.File;
import java.io.FileFilter;
import java.io.IOException;

public class Test {
    public static void main(String[] args) throws IOException {
        //拷贝目录
        FileUtils.copyDirectory(new File("d:/a"), new File("d:/test/a"), new FileFilter() {
            //在文件拷贝时的过滤条件 true表示需要拷贝,false表示不需要拷贝
            @Override
            public boolean accept(File pathname) {
                if (pathname.isDirectory() || pathname.getName().endsWith("html")) {
                    return true;
                }
                return false;
            }
        });
    }
}

IOUtils的使用

常见方法:

  • buffer():将传入的流进行包装,变成缓冲流。并可以通过参数指定缓冲大小。

  • closeQueitly():关闭流。

  • contentEquals():比较两个流中的内容是否一致。

  • copy():将输入流中的内容拷贝到输出流中,并可以指定字符编码。

  • copyLarge():将输入流中的内容拷贝到输出流中,适合大于2G内容的拷贝。

  • linelterator():返回可以迭代每一行内容的迭代器。

  • read():将输入流中的部分内容读入到字节数组中。

  • readFully():将输入流中的所有内容读入到字节数组中。

  • readLine():读入输入流内容中的一行。

  • toBufferedInputStream()、toBufferedReader():将输入转为带缓存的输入流。

  • toByteArray()、toCharArray():将输入流的内容转为字节数组、字符数组。

  • toString():将输入流或数组中的内容转化为字符串。

  • write():向流里面写入内容。

  • writeLine():向流里面写入一行内容。

读取文本文件转换为String:

import org.apache.commons.io.IOUtils;

import java.io.FileInputStream;
import java.io.IOException;

public class Test {
    public static void main(String[] args) throws IOException {
        String content = IOUtils.toString(new FileInputStream("d:/a.txt"), "utf-8");
        System.out.println(content);
    }
}
0

评论区