Apache common-io用户指南

用户指南

Commons-io 包含utility classes,endian classes,line iterator,file filters,file comparators 以及stream implementations.

如果像要更多详细描述,请查阅javadocs.

Utility 类库

IOUtils

IOUtils 包含处理阅读、写作和复制的实用方法。这些方法在InputStream, OutputStream, Reader和Writer上可以正常工作。

举一个例子,考虑一下读取来自一个url的数据,并且打印它们。使用标准的方法是:

InputStream in =new URL( "http://jakarta.apache.org").openStream();
try {
InputStreamReader inR = new InputStreamReader( in );
BufferedReader buf = new BufferedReader( inR );
String line;
while ( ( line = buf.readLine() ) != null ) {
System.out.println(line );
}
} finally {
in.close();
} 如果使用IOUtils类,可以这样做: InputStream in =new URL( "http://jakarta.apache.org").openStream();
try {
System.out.println(IOUtils.toString( in) );
} finally {
IOUtils.closeQuietly(in);
}

在某些应用领域,他们的IO操作是很普遍的,使用这个类可以节省很多时间。你完全可以依靠行之有效的代码。

对于上面的实用代码,灵活性和速度是最重要的。不过你也应该明白这种方法的局限性。利用上述技术读1GB的文件会导致试图创造一个1GB的字符串对象呢!

FileUtils

FileUtils 类提供了一些操作文件对象的实用方法。包含读取、写入、复制和比较文件。

比如逐句读取一整个文件可以使用如下方法:

Filefile = new File("/commons/io/project.properties");
List lines= FileUtils.readLines(file,"UTF-8");FilenameUtils

FilenameUtils

FilenameUtils类里包含了一些方法,可以直接操作文件名而不用使用文件对象。该类的目的是保持程序在Unix和Windows之间的一致性,以帮助这些环境中(如移动从开发到生产)之间的转换。

例如标准化一个文件名去除相邻两点的片段:

String filename ="C:/commons/io/../lang/project.xml";
String normalized = FilenameUtils.normalize(filename);
// result is "C:/commons/lang/project.xml"

FileSystemUtils

FileSystemUtils包含了一些JDK没有提供的用于访问文件系统的实用方法。当前,只有一个用于读取硬盘空余空间的方法可用。注意这里使用命令行,而不是本地代码。

long freeSpace =FileSystemUtils.freeSpace("C:/");

Endian类库

不同的计算机体系结构使用不同约定的字节排序。在所谓的“低位优先”体系结构中(如Intel),低位字节处于内存中最低位置,而其后的字节,则处于更高的位置。在“高位优先”的体系结构中(如Motorola),这种情况恰恰相反。

这个类库上有两个相关类:

EndianUtils包含用于交换java原对象和流之间的字节序列。

SwappedDataInputStream类是DataInput接口的一个实例。使用它,可以读取非本地的字节序列。

想了解更多,请参阅http://www.cs.umass.edu/~verts/cs32/endian.html

Line iterator

org.apache.commons.io.LineIterator类提供了一个灵活的方式与基于行的文件交互。可以直接创建一个实例,或者使用FileUtils或IOUtils的工厂方法来创建。推荐的使用模式是:

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

File filters

org.apache.commons.io.filefilter包定义了一个合并了java.io.FileFilter以及java.io.FilenameFilter的接口(IOFileFilter)。除此之外,这个包还提供了一系列直接可用的IOFileFilter的实现类,可以通过他们合并其它的文件过滤器。比如,这些文件过滤器可以在列出文件时使用或者在使用文件对话框时使用。

有关详细信息,请参阅filefilter包的Javadoc。

File comparators

org.apache.commons.io.comparator包为java.io.File提供了一些java.util.Comparator接口的实现。例如,可以使用这些比较器对文件集合或数组进行排序。

有关详细信息,请参阅comparator包的Javadoc。

Streams

org.apache.commons.io.input和org.apache.commons.io.output包中包含的针对数据流的各种各样的的实现。包括:

•空输出流-默默吸收发送给它的所有数据

•T型输出流-全用两个输出流替换一个进行发送

•字节数组输出流-这是一个更快版本的JDK类

•计数流-计算通过的字节数

•代理流-使用正确的方法委拖

•可锁写入-使用上锁文件提供同步写入

有关详细信息,请参阅inputoutput包的Javadoc。

参考:http://blog.csdn.net/wangyanan829/article/details/7843376

java Apache common-io 讲解的更多相关文章

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

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

  2. Caused by: java.lang.ClassNotFoundException: org.apache.commons.io.FileUtils

    1.错误叙述性说明 警告: Could not create JarEntryRevision for [jar:file:/D:/MyEclipse/apache-tomcat-7.0.53/web ...

  3. java.lang.NoClassDefFoundError: org/apache/commons/io/output/DeferredFileOutputStream(转)

    java.lang.NoClassDefFoundError: org/apache/commons/io/output/DeferredFileOutputStream 使用Tomcat的Manag ...

  4. java.lang.UnsatisfiedLinkError: org.apache.hadoop.io.nativeio.NativeIO$Windows.access0(Ljava/lang/String;I)Z

    在 windows 上运行 MapReduce 时报如下异常 Exception in thread "main" java.lang.UnsatisfiedLinkError: ...

  5. Exception in thread "main" java.lang.UnsatisfiedLinkError: org.apache.hadoop.io.nativeio.NativeIO$Windows.access0(Ljava/lang/String;I)Z

    1.window操作系统的eclipse运行wordcount程序出现如下所示的错误: Exception in thread "main" java.lang.Unsatisfi ...

  6. java.lang.NoClassDefFoundError: org/apache/commons/io/output/DeferredFileOutputStream

    java.lang.ClassNotFoundException: org.apache.commons.io.output.DeferredFileOutputStream at org.apach ...

  7. hive orc压缩数据异常java.lang.ClassCastException: org.apache.hadoop.io.Text cannot be cast to org.apache.hadoop.hive.ql.io.orc.OrcSerde$OrcSerdeRow

    hive表在创建时候指定存储格式 STORED AS ORC tblproperties ('orc.compress'='SNAPPY'); 当insert数据到表时抛出异常 Caused by: ...

  8. Tomcat中使用commons-io-2.5发生的错误java.lang.ClassNotFoundException: org.apache.commons.io.IOUtils

    关键词:IntelliJ IDEA.Tomcat.commons-io-2.5.jar.java.lang.ClassNotFoundException: org.apache.commons.io. ...

  9. 报错:maven:java.lang.NoClassDefFoundError: org/apache/commons/io/Charsets

    运行报错: maven:java.lang.NoClassDefFoundError: org/apache/commons/io/Charsets 找不到Charsets这个类 上网查了以后,是因为 ...

随机推荐

  1. 深入理解Java虚拟机 &GC分代年龄

    堆内存 Java 中的堆是 JVM 所管理的最大的一块内存空间,主要用于存放各种类的实例对象.在 Java 中,堆被划分成两个不同的区域:新生代 ( Young ).老年代 ( Old ).新生代 ( ...

  2. 关于MUI v0.18.0版本 Table组件里的复选框不能选的解决方案

    前段时间在用MUI的时候,Table组件出现复选框不能选的bug(描述: 点击复选框,点击事件会触发,复选框勾选状态无变化). 解决方法: 用CheckBox组件代替Table组件自带的复选框. 解决 ...

  3. C1WPF制作OLAP Cube浏览工具

    经过前期一段时间对WPF的学习了解,相信大家对WPF有了一定的了解.今天我们一起来了解使用Component One(简称C1)的WPF控件制作CUBE浏览工具.其实这个OLAP控件官方已经有了很详细 ...

  4. 6/7 sprint2 看板和燃尽图的更新

  5. Robot Framework 教程 (7) - 使用For循环

    在自动化测试过程中,使用For循环来对某个动作进行重复操作是很普遍的行为.在Robot Framework中,各种测试库中均提供了多种方式的For循环结构,在其中覆盖了大部分类型的循环类型.而Robo ...

  6. 【百度】大型网站的HTTPS实践(三)——HTTPS对性能的影响

    HTTPS在保护用户隐私,防止流量劫持方面发挥着非常关键的作用,但与此同时,HTTPS也会降低用户访问速度,增加网站服务器的计算资源消耗.本文主要介绍HTTPS对性能的影响. HTTPS对访问速度的影 ...

  7. ACM数论之旅2---快速幂,快速求a^b((ノ`Д´)ノ做人就要坚持不懈)

    a的b次方怎么求 pow(a, b)是数学头文件math.h里面有的函数 可是它返回值是double类型,数据有精度误差 那就自己写for循环咯 LL pow(LL a, LL b){//a的b次方 ...

  8. true和false

    下面这些值在JavaScript中都是falsy: false 0 (数字零) "" (空字符串) null undefined NaN (一个特殊的Number值,意为Not-a ...

  9. Java的checked exception与unchecked exception

    在Java中exception分为checked exception和unchecked异常,两者有什么区别呢? 从表象来看, checked异常就是需要在代码中try ... catch ...的异 ...

  10. ios开发之 -- xib关联自定义view

    在xib下使用自定义的view,因为很多时候,可能幸亏自顶一个view,然后在view里面填充控件,但是需要重写很多无用的 代码,而且很容易出错不说,还很好工作量,使用xib的话,分钟搞定一个view ...