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. 在visual studio中查看源代码

    地址:https://docs.microsoft.com/zh-cn/visualstudio/ide/go-to-and-peek-definition?view=vs-2017 在 Visual ...

  2. grunt入门讲解4:如何创建task(任务)

    每当运行Grunt时, 你可以为其指定一个或多个任务, 这些任务用于告诉Grunt你想要它做什么事情. 如果你没有指定一个任务,并且你已经定义一个名为 "default" 的任务, ...

  3. phantomjsDriver的初始化

    public static void main(String[] args) { File file=new File("src/main/resources/drivers"); ...

  4. Jaxb2实现JavaBean与xml互转的方法详解

    本文实例讲述了Jaxb2实现JavaBean与xml互转的方法.分享给大家供大家参考,具体如下: 一.简介 JAXB(Java Architecture for XML Binding) 是一个业界的 ...

  5. excel文件怎么使用php进行处理

    1.可以通过phpmyadmin导入csv文件 2.也可以直接使用php 处理已经将excel另存为.csv后缀的文件, 通过php专门处理csv文件的函数 如 fgetcsv() <?php ...

  6. webservice(一) 概念

    Web service:是一个平台独立的,低耦合的,自包含的.基于可编程的web的应用程序,可使用开放的XML(标准通用标记语言下的一个子集)标准来描述.发布.发现.协调和配置这些应用程序,用于开发分 ...

  7. check the manual that corresponds to your MySQL server version for the right syntax to use near 'type=InnoDB' at line 7

    第一种是:解决MySQL的版本问题(我用的是mysql 5.5版本),mysql 5.0版本以后的数据库方言是:org.hibernate.dialect.MySQ5LInnoDBDialect.第二 ...

  8. Python编写登陆接口

    实现功能: 输入用户名和密码 认证成功后显示欢迎信息 输错三次后锁定 # 提示输入用户名和密码 # 验证用户名和密码 # 如果错误,则输出用户名或密码错误 # 如果成功,则输出 欢迎,XXX! #!/ ...

  9. STL 基本概念

    STL 基本概念 STL(Standard Template Library,标准模板库)是惠普实验室开发的一系列软件的统称.现在是一个C++软件库,也是C++标准程序库的一部分,但在被引入C++之前 ...

  10. BZOJ5389 比例查询 【离线】

    题目链接 BZOJ5389 题解 太\(sb\)了,这种题都想不出来 发现复杂度允许\(n\sqrt{n}\),我们可以对于每个位置\(\sqrt{n}\)枚举约数,然后维护比例的最晚出现的位置,维护 ...