梳理common-io工具包
2024-09-03 13:49:31
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 < 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
监视线程, 如果达到指定的超时, 则中断该线程.
最新文章
- dependency of static library
- PHP Warning: PHP Startup: in Unknown on line 0
- 批量Clip
- 页面copyright部分始终居于页面底部
- 基于CSS3和HTML5图片加工前后对比代码
- MySQL 中 where id in (1,2,3,4,...) 的效率问题讨论
- 基于Node的PetShop,RESTful API以及认证
- VB6 GDI+ 入门教程[1] GDI+介绍
- phonegap开发入门
- thinkphp验证码点击更换js实现
- Dapper的完整扩展(转)
- Resizable(调整大小)组件
- rPithon vs. rPython(转)
- 关于php变量的赋值和引用的区别
- [转] ESXI6.5 误将硬盘阵列卡配置为passthru直通模式后, 找不到硬盘的问题
- prototype 和 __proto__
- Windows PowerShell 入門(8)-関数編3
- 聪聪和可可 HYSBZ - 1415(概率 + spfa + 记忆化dp)
- [django]详情页列表页
- 2018.12.22 bzoj3926: [Zjoi2015]诸神眷顾的幻想乡(广义后缀自动机)
热门文章
- k8s简单介绍
- ping包的checksum校验和
- 批量替换word内容
- 003-Spring4 扩展分析-spring类初始化@PostConstruct >; InitializingBean >; init-method、ApplicationContext、BeanPostProcessor、BeanFactoryPostProcessor、BeanDefinitionRegistryPostProcessor
- 前端Ajax跨域解决方案
- 阶段3 3.SpringMVC&#183;_06.异常处理及拦截器_4 SpringMVC拦截器之介绍和搭建环境
- Python学习小技巧之列表项的排序
- Android adb.exe 开发模试安装
- HCL试验9
- Django学习笔记(二)URL编写规则