title: 梳理common-io工具包

comments: false

date: 2019-08-28 14:21:58

description: 对common-io工具包中的常用类进行整理,避免重复造轮子.

categories: Java


概述

今天再对 common-io 工具包进行一番梳理, 不得不说这些工具包实在是太实用了, 之前一直没注意也没有去了解这些工具包提供的功能, 所以一些工具包还是自己开发, 一些基本的文件操作也是自己写, 效率有点低.

排序(comparator)

该包下的类实现了 Comparator<File> 接口, 用于进行文件的排序操作, 比如:

  • 使用名字排序: NameFileComparator
  • 使用扩展名排序: ExtensionFileComparator
  • 使用文件大小排序: SizeFileComparator

过滤(filter)

提供了很多过滤器, 每个过滤器的类注释都说的很明白, 过滤器的名字也起的很明了, 这里挑选几个进行说明:

  • DirectoryFileFilter : 目录过滤器, 只返回目录
  • FileFileFilter : 文件过滤器, 只返回文件
  • HiddenFileFilter : 隐藏文件过滤器, 只返回隐藏文件
  • MagicNumberFileFilter : 过滤指定魔数的文件
  • NameFileFilter : 通过名字进行过滤
  • RegexFileFilter : 通过正则表达式进行过滤
  • SizeFileFilter : 通过文件大小进行过滤
  • PrefixFileFilter/SuffixFileFilter : 通过前缀或后缀进行过滤
  • WildcardFileFilter : 通过通配符进行过滤

使用:

File dir = new File(".");
String[] files = dir.list( new NameFileFilter("Test") );
for ( int i = 0; i &lt; files.length; i++ ) {
System.out.println(files[i]);
} // 或
FileFilterUtils#nameFileFilter(String)

输入流(input)

包中的类都有详细的注释, 类名也见名知意, 很好.

  • BOMInputStream : 可以判断文件是否含有 BOM 头
  • Tailer : Simple implementation of the unix "tail -f" functionality.

输出流(output)

  • ByteArrayOutputStream : 与标准的 ByteArrayOutputStream 提供的功能差不多
  • TeeOutputStream : Classic splitter of OutputStream. Named after the unix 'tee' command.

监视器(monitor)

FileAlterationListenerAdaptor : 监控文件或目录的创建删除修改等等. 使用 FileAlterationObserver 类进行操作.

例如:

File directory = new File(new File("."), "src");
FileAlterationObserver observer = new FileAlterationObserver(directory);
observer.addListener(new FileAlterationListenerAdaptor(){
@Override
public void onStart(FileAlterationObserver observer) {
System.out.println("onStart");
} @Override
public void onDirectoryCreate(File directory) {
System.out.println("onDirectoryCreate");
} @Override
public void onDirectoryChange(File directory) {
System.out.println("onDirectoryChange");
} @Override
public void onDirectoryDelete(File directory) {
System.out.println("onDirectoryDelete");
} @Override
public void onFileCreate(File file) {
System.out.println("onFileCreate");
} @Override
public void onFileChange(File file) {
System.out.println("onFileChange");
} @Override
public void onFileDelete(File file) {
System.out.println("onFileDelete");
} @Override
public void onStop(FileAlterationObserver observer) {
System.out.println("onStop");
}
}); FileAlterationMonitor monitor = new FileAlterationMonitor(1000);
monitor.addObserver(observer);
monitor.start(); File file = new File(directory, "abc");
file.mkdirs(); monitor.stop();

FilenameUtils

封装了关于文件名称的相关操作. 类和方法上的注释写的都很清楚, 知道有这么一个工具即可.

FileUtils

大致提供了一下功能:

  • 获取临时目录
  • 获取用户目录
  • [强制]创建目录/文件
  • 列出目录下的文件或目录
  • 遍历文件或目录
  • 复制文件或目录
  • 删除目录或文件, 强制删除, 在虚拟机退出时删除
  • 读取/写入文件
  • 获取文件大小
  • 移动文件/目录
  • 是否是连接文件

IoUtils

这个不常用, 因为更底层, 大部分需求都是用 FileUtils 就可以解决了.

LineIterator

LineIterator it = FileUtils.lineIterator(file, "UTF-8");
try {
while (it.hasNext()) {
String line = it.nextLine();
// do something with line
}
} finally {
it.close();
}

ThreadMonitor

监视线程, 如果达到指定的超时, 则中断该线程.

梳理common-io工具包的更多相关文章

  1. Elasticsearch搜索异常-------org.elasticsearch.common.io.stream.NotSerializableExceptionWrapper: parse_exception

    异常问题: Caused by: org.elasticsearch.index.query.QueryShardException: Failed to parse query [LOL: Uzi和 ...

  2. Java学习随笔4:Java的IO操作

    1. IO流的作用是读写设备上的数据,如硬盘文件.内存.键盘.网络等.根据数据走向,可分为:输入流和输出流:根据处理的数据类型,可分为:字节流和字符流.字节流可以处理所有类型的数据,如MP3.图片.视 ...

  3. apache commons io包基本功能

    1. http://jackyrong.iteye.com/blog/2153812 2. http://www.javacodegeeks.com/2014/10/apache-commons-io ...

  4. Java I/O— 梳理各种“流”

    背景 Java核心库java.io它提供了一个综合IO接口.包含:文件读写.标准装备输出等..Java在IO它是流为基础进行输入输出的.全部数据被串行化写入输出流,或者从输入流读入. -- 百度百科 ...

  5. [转]Commons IO 官方文档

    原文地址:http://ifeve.com/commons-io/ 本文翻译自 Commons IO 官方文档 译者:MagicWolf Common IO 是一个工具库,用来帮助开发IO功能 它包括 ...

  6. apache.commons.io.FileUtils的常用操作

    至于相关jar包可以到官网获取 http://commons.apache.org/downloads/index.html package com.wz.apache.fileUtils; impo ...

  7. apache commons io入门

    原文参考  http://www.javacodegeeks.com/2014/10/apache-commons-io-tutorial.html    Apache Commons IO 包绝对是 ...

  8. .apache.commons.io 源代码学习(二)FilenameUtils类

    FilenameUtils是apache common io中一个独立的工具类,对其他没有依赖,看其源代码的import即可知道. import java.io.File;import java.io ...

  9. Google的Guava之IO升华

    版权声明:本文为博主原创文章,未经博主同意不得转载. https://blog.csdn.net/luo201227/article/details/36413279 程序员在开发过程中,使用文件的几 ...

  10. 少啰嗦!一分钟带你读懂Java的NIO和经典IO的区别

    1.引言 很多初涉网络编程的程序员,在研究Java NIO(即异步IO)和经典IO(也就是常说的阻塞式IO)的API时,很快就会发现一个问题:我什么时候应该使用经典IO,什么时候应该使用NIO? 在本 ...

随机推荐

  1. python 异常和弹出框

    import tkinter.messagebox try: fileContent = open("abnormal.txt") fileContent.close() prin ...

  2. java实现几种常用排序:冒泡排序

    一.冒泡排序介绍 冒泡排序是我们得最多的排序方式之一,原因是简单易实现,且原理易懂.顾名思义,冒泡排序,它的排序过程就像水中的气泡一样,一个一个上浮到水面. 二.冒泡排序原理分析 三.冒泡排序代码实现 ...

  3. The inherit, initial, and unset values

    The  inherit, initial, and unset keywords are special values you can give to any CSS property. Tests ...

  4. fiddler过滤指定的请求

    需要过滤的请求如图: 设置过滤: 正则表达式(REGEX:\.(js|css|google|favicon\?.*)+)

  5. Hibernate对象的状态分类

    对象的状态: 临时状态Transient: 与数据库没有对应,跟Session没有关联 一般是新new出的对象 持久化状态Persistent: 对象在Session的管理之中,最终会有对应的数据库记 ...

  6. 【JVM学习笔记】打破双亲委托机制的例子

    Tomcat也有自己的类加载器,比如Servlet,这些类加载器就改变了双亲委托模型的默认机制 (该主题有待深入)

  7. 利用Fiddler-ImageView识别图像信息及优化图像

    一般情况下,我们用Fiddler来拦截修改数据包,分析数据包,但很少拿它来分析图片. Fiddler里的ImageView视图不仅仅能显示图片,还能解析图片里包含的信息,比如帧数,图片修改时间,版权信 ...

  8. webdriervAPI(下载文件)

    from  selenium  import  webdriver driver  =  webdriver.Chorme() driver.get("http://www.baidu.co ...

  9. FPGA —— Quartus II 15.0 使用 ModelSim SE-64 2019.2 软件进行仿真

    Quartus II 15.0 使用 ModelSim SE-64 2019.2 软件进行仿真 ModelSim 仿真 Verilog HDL 时需要编写一个 TestBench 仿真文件,通过仿真文 ...

  10. spring boot 框架根據 sql 創建語句自動生成 MVC層類代碼

    GITHUB: https://github.com/lin1270/spring_boot_sql2code 會自動生成model.mapper.service.controller. 代碼使用No ...