Commons Io 包 学习笔记~

本文深入探讨Java IO包的核心组件及工具类,如FileUtils、IOUtils等,并介绍过滤器体系,包括IOFileFilter和AbstractFileFilter等。此外,文章还讲解了文件比较器和特殊输入流的应用。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

IO包学习笔记 

IO几乎都是实现序列化接口

Common 根目录工具类阅读

FileUtils 比较有学习价值 ,提供文件各种类型的操作,有点模拟操作系统
引用了大量的过滤器

FileSystemUtil 后去硬盘可用空间,
执行CMD /-C C: 指令,获取结果Process,打开流获取返回结果,再截取
最后的空间显示.该类自动完成对操作系统类型的判断,具有计算可用空间
的功能

LineIterator 可以对文件进行迭代行访问,实现依赖于
BufferReader, 很安全的设计具体参考官方用例

IOUtils提供以下操作
* <li>closeQuietly - these methods close a stream ignoring nulls and exceptions
* <li>toXxx/read - these methods read data from a stream
* <li>write - these methods write data to a stream
* <li>copy - these methods copy all the data from one stream to another
* <li>contentEquals - these methods compare the content of two streams
HexDump 封装了十六进制的转换
IOCase
* This class captures that difference, providing an enumeration to
* control how filename comparisons should be performed. It also provides
* methods that use the enumeration to perform comparisons.

IOExceptionWithCause 解决Jvava 6 兼容问

字节元组操作~


过滤器 filter包

IOFileFilter 继承 来自 java.io 的 FileFilter, FilenameFilter(这个姑且看作Java提供的规范, 是交由JVM去识别的, 与必须实现的接口规范)

AbstractFileFilter 抽象基类 该抽象类本身实现 IOFileFilter ,有默认操作

ConditionalFileFilter 接口 规定对内置过滤器列表的添加删除操作

FileFilterUtils 工具 采用静态函数 提供各种过滤器的获取,工厂类
实现依赖于抽象 因为整个filter包地写的具体类都继承了AbstractFileFilter 和 实现了 FileFilterUtils

Filter包的其他类 几乎都实现了 AbstractFileFilter ; 然后有些还实现了
ConditionalFileFilter ,基于该接口的实现拥有 集成多个过滤器功能,实现
例如AndFilterFilter和OrFilterFilter主要采用对各个filter的accept函数
的调用。

注意:其中有个Delegate的代理过滤器类 ,其实也就一个代理模式。

还有个WildsCard 实现了通配符的功能

IOCase 提供1大小写 2系统级 的字符串比较,判断操作

整个设计 所见即所得,一些需要的字符串来判断的操作,全部封装为类
,采用比较规范的命名


工具包FilenameUtils类

提供对文件名的各种操作,支持windows和linuxs目录名,是一个解决了兼容问题
的工具类,希望有机会能有用到他。

Comparator :都实现了Comparator接口 和 Serializable 接口
DefaultFileComparator 默认文件比较器
ExtensionFileComparator 扩展名比较器
LastModifiedFileComparator 用file.getLastModified方法得到文件修改日期做
比较
NameFileComparator 比较文件名字~ 引用IOCase工具类进行比较
PathFileComparator 比较文件路径 依然采用有大小写控制比较功能的IOCase
ReverseComparator 基于代理模式,通过调用函数对象顺序进行结果反转,需要
用其它非代理比较器,进行构造(代理模式的特点)
SizeFileComparator 文件大小比较器,引用FileUitls进行目录大小获取
目录 文件...标志sumDirectoryContents标志 在输入如果是目录的情况下
是否计算目录券大小

Input 包:]
-- 主要 -- ProxyInputStream 代理基类 - 字节流
-- 主要 -- ProxyReader代理基类 - 字符流 与上面差不多~
代理:
CountInputStream 代理一个输入流,并随时可以读取已经读取的大小
这在上传文件反馈用户上传进度的时候蛮有用的
AutoCloseInputStream 当文件读完时会自动清理资源 引用CloseInputStream
这个实现不明白是怎么回事
CloseShieldInputStream close()设置基类inputstream对象为 CloseInputStream 这样的实现不知道什么回事


纯继承
ClosedInputStream read()方法总返回一,返回结束标志
TeeInputStream 在读的同时,复制输出
InputStream proxy that transparently writes a copy of all bytes read
* from the proxied stream to a given OutputStream

NullInputSream 模拟实现,不知道
A functional, light weight {@link InputStream} that emulates
* a stream of a specified size.
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值