`
sunxboy
  • 浏览: 2878798 次
  • 性别: Icon_minigender_1
  • 来自: 武汉
社区版块
存档分类
最新评论

Commons IO使用

阅读更多

Commons IO提供了org.apache.commons.io.CopyUtils类来将某个InputStream,Reader,byte[]数据或字符串的内容拷贝到OutputStream或Writer.

Java代码
  1. Writer writer =  new  FileWriter(  "test.dat"  );  
  2. InputStream inputStream =   
  3.     getClass( ).getResourceAsStream("./test.resource" );  
  4. CopyUtils.copy( inputStream, writer );  
  5. writer.close( );  
  6. inputStream.close( );  
    Writer writer = new FileWriter( "test.dat" );
    InputStream inputStream = 
        getClass( ).getResourceAsStream("./test.resource");
    CopyUtils.copy( inputStream, writer );
    writer.close( );
    inputStream.close( );




如果需要把信息从Reader或InputStream拷贝到字符串中,请使用IOUtils.toString()方法.

Java代码
  1. InputStream inStream = url.openStream( );  
  2. String contents = IOUtils.toString( inStream );  
    InputStream inStream = url.openStream( );
    String contents = IOUtils.toString( inStream );




通过org.apache.commons.io.IOUtils,你可以很好地关闭某个InputStream,OutputStream,Reader或Writer,而不必担心null或IOException.

Java代码
  1. try  {  
  2.     File file = new  File(  "test.dat"  );  
  3.     reader = new  FileReader( file );  
  4.     result = CopyUtils.toString( reader );  
  5. catch ( IOException ioe ) {  
  6.     System.out.println( "Unable to copy file test.dat to a String."  );  
  7. finally  {  
  8.     IOUtils.closeQuietly( reader );  
  9. }  
try {
    File file = new File( "test.dat" );
    reader = new FileReader( file );
    result = CopyUtils.toString( reader );
} catch( IOException ioe ) {
    System.out.println( "Unable to copy file test.dat to a String." );
} finally {
    IOUtils.closeQuietly( reader );
}




使用FileUtils.byteCountToDisplaySize()生成一个字符串,该字符串含有有一个近似的比较好理解的文件的相对大小的值.

Java代码
  1. File file =  new  File( "project.xml" );  
  2. long  bytes = file.length( );  
  3. String display = FileUtils.byteCountToDisplaySize( bytes );  
   File file = new File("project.xml");
   long bytes = file.length( );
   String display = FileUtils.byteCountToDisplaySize( bytes );




如果需要将一个文件拷贝为另一个文件,或者需要将某个文件拷贝到某一个目录中,可以使用如下的代码:
拷贝为另一个文件:

Java代码
  1. File src =  new  File(  "test.dat"  );  
  2. file dest = new  File(  "test.dat.bak"  );  
  3. FileUtils.copyFile( src, dest );  
    File src = new File( "test.dat" );
    file dest = new File( "test.dat.bak" );
    FileUtils.copyFile( src, dest );


拷贝到某一个目录:

Java代码
  1. File src =  new  File(  "test.dat"  );  
  2. File dir = new  File(  "./temp"  );  
  3. FileUtils.copyFileToDirectory( src, dir );  
    File src = new File( "test.dat" );
    File dir = new File( "./temp" );
    FileUtils.copyFileToDirectory( src, dir );




使用Commons IO,你也可以很方便把字符串的内容写入文件中去,具体的过程不用怎么理会:

Java代码
  1. String string =  "Blah blah blah" ;  
  2. File dest = new  File(  "test.tmp"  );  
  3. FileUtils.writeStringToFile( dest, string);  
  String string = "Blah blah blah";
  File dest = new File( "test.tmp" );
  FileUtils.writeStringToFile( dest, string);




当然,有另外的一个功能,可以将URL的内容存入文件中去:

Java代码
  1. URL src =  new  URL(  "http://www.nytimes.com"  );  
  2. File dest = new  File(  "times.html"  );  
  3. FileUtils.copyURLToFile( src, dest );  
    URL src = new URL( "http://www.nytimes.com" );
    File dest = new File( "times.html" );
    FileUtils.copyURLToFile( src, dest );




如果你需要删除一个目录下的所有内容(包括其目录),可以这样做:

Java代码
  1. File dir =  new  File(  "temp"  );  
  2. FileUtils.deleteDirectory( dir );  
    File dir = new File( "temp" );
    FileUtils.deleteDirectory( dir );

如果只想清空目录下所有内容,并不删除该目录,可以这样写:FileUtils.cleanDirectory( dir );


很简单地,可以得到一个目录的大小:

Java代码
  1. File dir =  new  File(  "temp"  );  
  2. long  dirSize = FileUtils.sizeOfDirectory( );  
File dir = new File( "temp" );
long dirSize = FileUtils.sizeOfDirectory( );




如果你想得到某个目录下所有以.txt结尾的文件,可以如下这样做:

Java代码
  1. import  java.io.FilenameFilter;  
  2. import  org.apache.commons.io.filefilter.SuffixFileFilter;  
  3. import  org.apache.commons.lang.ArrayUtils;  
  4.   
  5. File rootDir = new  File( "." );  
  6. FilenameFilter fileFilter = new  SuffixFileFilter( ".txt" );  
  7. String[] txtFiles = rootDir.list( fileFilter );  
  8. System.out.println( ArrayUtils.toString( txtFiles ) );  
import java.io.FilenameFilter;
import org.apache.commons.io.filefilter.SuffixFileFilter;
import org.apache.commons.lang.ArrayUtils;

File rootDir = new File(".");
FilenameFilter fileFilter = new SuffixFileFilter(".txt");
String[] txtFiles = rootDir.list( fileFilter );
System.out.println( ArrayUtils.toString( txtFiles ) );




举另一个例子,怎样列出目录中以.htm和.html结尾的文件

Java代码
  1. import  org.apache.commons.io.filefilter.AndFileFilter;  
  2. import  org.apache.commons.io.filefilter.DirectoryFileFilter;  
  3. import  org.apache.commons.io.filefilter.IOFileFilter;  
  4. import  org.apache.commons.io.filefilter.NotFileFilter;  
  5. import  org.apache.commons.io.filefilter.OrFileFilter;  
  6. import  org.apache.commons.io.filefilter.SuffixFileFilter;  
  7. import  org.apache.commons.lang.ArrayUtils;  
  8.   
  9. IOFileFilter htmlFilter =   
  10.     new  OrFileFilter(  new  SuffixFileFilter( "htm" ), new  SuffixFileFilter( "html" ) );  //复合两个SuffixFileFilter   
  11. IOFileFilter notDirectory = new  NotFileFilter( DirectoryFileFilter.INSTANCE );     //拒绝选择目录   
  12. FilenameFilter fileFilter = new  AndFileFilter( htmlFilter, notDirectory );  
  13. String[] htmlFiles = rootDir.list(fileFilter);  
  14. System.out.println( ArrayUtils.toString( htmlFiles ));  
import org.apache.commons.io.filefilter.AndFileFilter;
import org.apache.commons.io.filefilter.DirectoryFileFilter;
import org.apache.commons.io.filefilter.IOFileFilter;
import org.apache.commons.io.filefilter.NotFileFilter;
import org.apache.commons.io.filefilter.OrFileFilter;
import org.apache.commons.io.filefilter.SuffixFileFilter;
import org.apache.commons.lang.ArrayUtils;

IOFileFilter htmlFilter = 
    new OrFileFilter( new SuffixFileFilter("htm"),new SuffixFileFilter("html") ); //复合两个SuffixFileFilter
IOFileFilter notDirectory = new NotFileFilter( DirectoryFileFilter.INSTANCE );    //拒绝选择目录
FilenameFilter fileFilter = new AndFileFilter( htmlFilter, notDirectory );
String[] htmlFiles = rootDir.list(fileFilter);
System.out.println( ArrayUtils.toString( htmlFiles ));



注:文中代码来之<<Jakarta Commons Cookbook>>一书第十章

分享到:
评论

相关推荐

    commons-io-2.8.0-API文档-中英对照版.zip

    赠送jar包:commons-io-2.8.0.jar; 赠送原API文档:commons-io-2.8.0-javadoc.jar; 赠送源代码:commons-io-2.8.0-sources.jar; 赠送Maven依赖信息文件:commons-io-2.8.0.pom; 包含翻译后的API文档:commons-io...

    commons-io-2.11.0-API文档-中文版.zip

    赠送jar包:commons-io-2.11.0.jar; 赠送原API文档:commons-io-2.11.0-javadoc.jar; 赠送源代码:commons-io-2.11.0-sources.jar; 赠送Maven依赖信息文件:commons-io-2.11.0.pom; 包含翻译后的API文档:...

    commons-io-2.7-API文档-中文版.zip

    赠送jar包:commons-io-2.7.jar; 赠送原API文档:commons-io-2.7-javadoc.jar; 赠送源代码:commons-io-2.7-sources.jar; 赠送Maven依赖信息文件:commons-io-2.7.pom; 包含翻译后的API文档:commons-io-2.7-...

    commons-io-1.3.2-API文档-中文版.zip

    赠送jar包:commons-io-1.3.2.jar; 赠送原API文档:commons-io-1.3.2-javadoc.jar; 赠送源代码:commons-io-1.3.2-sources.jar; 赠送Maven依赖信息文件:commons-io-1.3.2.pom; 包含翻译后的API文档:commons-io...

    commons-io-2.11.0-bin.zip

    这个压缩包包含了该库的所有编译后的类文件和必要的资源,使得开发者能够在他们的项目中方便地使用Apache Commons IO的功能。 Apache Commons IO库的主要目标是弥补Java标准库中对输入/输出操作支持的不足。在描述...

    commons-io-2.6.jar

    本文将深入探讨`commons-io-2.6.jar`中的关键功能和使用方法。 一、文件操作 1. 文件和目录操作:Apache Commons IO提供了一系列API用于创建、删除、复制和移动文件及目录。例如,`FileUtils.copyFile()`和`...

    开发工具 commons-io-1.3.2

    开发工具 commons-io-1.3.2开发工具 commons-io-1.3.2开发工具 commons-io-1.3.2开发工具 commons-io-1.3.2开发工具 commons-io-1.3.2开发工具 commons-io-1.3.2开发工具 commons-io-1.3.2开发工具 commons-io-1.3.2...

    commons-io-2.7-API文档-中英对照版.zip

    赠送jar包:commons-io-2.7.jar 赠送原API文档:commons-io-2.7-javadoc.jar 赠送源代码:commons-io-2.7-sources.jar 包含翻译后的API文档:commons-io-2.7-javadoc-API文档-中文(简体)-英语-对照版.zip 对应...

    commons-io-2.7-bin.zip

    "commons-io-2.7-bin.zip"是Apache Commons IO库的版本2.7的二进制分发包,它包含了编译好的Java类库供开发者直接使用。 1. **Apache Commons IO概述** - Apache Commons IO 是Apache软件基金会的一个项目,旨在...

    commons-io-2.5-API文档-中文版.zip

    赠送jar包:commons-io-2.5.jar; 赠送原API文档:commons-io-2.5-javadoc.jar; 赠送源代码:commons-io-2.5-sources.jar; 赠送Maven依赖信息文件:commons-io-2.5.pom; 包含翻译后的API文档:commons-io-2.5-...

    commons-io-2.4 包含了所有commons-io的jar包和源码

    Apache Commons IO 是一个Java库,...对于JDK 1.6及更高版本的项目,使用"commons-io-2.4"可以确保兼容性和效率。通过理解和运用这些知识点,开发者可以更高效地处理各种输入输出任务,提高代码的可读性和可维护性。

    commons-io-2.2-API文档-中文版.zip

    赠送jar包:commons-io-2.2.jar; 赠送原API文档:commons-io-2.2-javadoc.jar; 赠送源代码:commons-io-2.2-sources.jar; 包含翻译后的API文档:commons-io-2.2-javadoc-API文档-中文(简体)版.zip 对应Maven...

    commons-fileupload和commons-io的jar包

    在实际开发中,Apache Commons FileUpload通常与Apache Commons IO结合使用,FileUpload负责解析上传的文件数据,而IO库则帮助开发者完成文件的保存、移动或处理。例如,开发者可以先使用FileUpload解析出上传的文件...

    Apache commons-io-2.5.jar

    8. **测试与文档**: Apache Commons IO库拥有详尽的Javadoc文档和单元测试,这不仅方便了开发者的使用,也保证了库的质量和稳定性。 总的来说,Apache Commons IO是一个强大且全面的工具集,它简化了Java中的I/O...

    commons-io-2.11.0.rar

    Apache Commons IO 是一个Java库,专门用于处理输入/输出(I/O)操作。这个库提供了大量的实用工具类,简化了常见的文件、流、过滤器、读写操作等任务。"commons-io-2.11.0.rar"是Apache Commons IO库的版本2.11.0的...

    commons-io-2.3.jar

    《Apache Commons IO 2.3.jar:高效便捷的IO操作工具》 Apache Commons IO库是Java开发者必备的工具包之一,尤其是其中的commons-...因此,掌握Apache Commons IO的使用,无疑将提升Java程序员的开发技能和代码质量。

    commons-io所有版本(0.1-2.4).zip

    Apache Commons IO 是一个Java库,它提供了一系列实用工具类来处理输入/输出操作。这个压缩包包含从0.1版本到2.4版本的所有Apache Commons IO的发布。这些版本跨越了多个年份,反映了该库在发展过程中的功能增强、...

    commons-io-2.8.0.rar

    "commons-io-2.8.0.rar"是一个包含 Commons IO 库版本2.8.0的压缩包文件,便于开发者在项目中引用和使用。 在 Commons IO 中,我们可以找到许多有用的类和方法,这些在处理文件、流、字符集转换、读写操作等方面...

    Commons IO 2.4 API帮助文档

    Commons IO 2.4版本 最新API帮助文档

    commons-io-2.6.jar下载

    以上只是 `commons-io-2.6.jar` 中部分关键功能的概述,实际使用中,根据具体需求,可以灵活组合这些工具类和方法,以满足各种 I/O 相关的需求。Apache Commons IO 以其强大的功能和良好的兼容性,广泛应用于各种 ...

Global site tag (gtag.js) - Google Analytics