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.