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.