`
hdxiong
  • 浏览: 375275 次
  • 性别: Icon_minigender_1
  • 来自: 北京
社区版块
存档分类
最新评论

CopyUtils执行从read到write的数据拷贝

    博客分类:
  • Java
阅读更多
Commons IO提供了org.apache.commons.io.CopyUtils类来将某个InputStream,Reader,byte[]数据或字符串的内容拷贝到OutputStream或Writer.
Writer writer = new FileWriter( "test.dat" );  
InputStream inputStream =
            getClass( ).getResourceAsStream("./test.resource");  
CopyUtils.copy( inputStream, writer );  
writer.close( );  
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()方法.
InputStream inStream = url.openStream( );  
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.
 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 );  
   }  

  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()生成一个字符串,该字符串含有有一个近似的比较好理解的文件的相对大小的值.
   File file = new File("project.xml");  
   long bytes = file.length( );  
   String display = FileUtils.byteCountToDisplaySize( bytes );  

   File file = new File("project.xml"); 
   long bytes = file.length( ); 
   String display = FileUtils.byteCountToDisplaySize( bytes ); 


如果需要将一个文件拷贝为另一个文件,或者需要将某个文件拷贝到某一个目录中,可以使用如下的代码:
拷贝为另一个文件:
     File src = new File( "test.dat" );  
    file dest = new File( "test.dat.bak" );  
    FileUtils.copyFile( src, dest );  

    File src = new File( "test.dat" ); 
    file dest = new File( "test.dat.bak" ); 
    FileUtils.copyFile( src, dest ); 

拷贝到某一个目录:
   File src = new File( "test.dat" );  
   File dir = new File( "./temp" );  
   FileUtils.copyFileToDirectory( src, dir );  

    File src = new File( "test.dat" ); 
    File dir = new File( "./temp" ); 
    FileUtils.copyFileToDirectory( src, dir ); 


使用Commons IO,你也可以很方便把字符串的内容写入文件中去,具体的过程不用怎么理会:
   String string = "Blah blah blah";  
   File dest = new File( "test.tmp" );  
   FileUtils.writeStringToFile( dest, string);  

  String string = "Blah blah blah"; 
  File dest = new File( "test.tmp" ); 
  FileUtils.writeStringToFile( dest, string); 


当然,有另外的一个功能,可以将URL的内容存入文件中去:
   URL src = new URL( "http://www.nytimes.com" );  
   File dest = new File( "times.html" );  
   FileUtils.copyURLToFile( src, dest );  

    URL src = new URL( "http://www.nytimes.com" ); 
    File dest = new File( "times.html" ); 
    FileUtils.copyURLToFile( src, dest ); 


如果你需要删除一个目录下的所有内容(包括其目录),可以这样做:
    File dir = new File( "temp" );  
    FileUtils.deleteDirectory( dir );  

    File dir = new File( "temp" ); 
    FileUtils.deleteDirectory( dir ); 


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


很简单地,可以得到一个目录的大小:
   File dir = new File( "temp" );  
   long dirSize = FileUtils.sizeOfDirectory( );  

   File dir = new File( "temp" ); 
   long dirSize = FileUtils.sizeOfDirectory( ); 


如果你想得到某个目录下所有以.txt结尾的文件,可以如下这样做:
   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 ) );  
   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结尾的文件
    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 ));  
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 )); 
分享到:
评论

相关推荐

    Read and Write Utility

    Read and Write Utility

    RW - Read & Write utility V1.6.4

    `Win32`通常指的是Windows平台上的32位应用程序接口,这个文件名列表可能包含的是适用于32位Windows系统的`RW - Read & Write utility`的可执行文件或者其他相关支持文件。安装或使用这些文件时,需要确保操作系统与...

    C 语言实现文件拷贝程序代码(read,write)

    C语言实现文件拷贝 用到系统函数open,read,write,close

    RW-Read & Write Utility

    RW-Read & Write Utility是一个功能很强大的硬件读写工具,基本上电脑上的各种系统设备都可以查看。 可在Windows下读取PCI、SMBIOS、IO、Memory、Bios及其他硬件信息查看,如Slic版本。 强大的实用程序,适用于硬件...

    HE-Hardware Read&Write Utility工具

    HE – Hardware Read & Write Utility 是 Windows 上一款功能强大的实用程序,适用于硬件工程师、BIOS 工程师、驱动程序开发人员、QA 工程师等。该实用程序访问几乎所有的计算机硬件,包括 PCI (PCI Express)、PCI ...

    ReadWrite Everything V1.4.7

    在日常使用中,ReadWrite Everything可以帮助用户执行多种任务,例如检查磁盘健康状态、数据恢复、格式化、扇区级别的数据读取与写入等。这对于系统管理员、程序员以及电脑爱好者来说,是一款必不可少的实用工具。其...

    文件拷贝(read() write()实现)

    接着是`read()`函数,它的作用是从已打开的文件中读取数据。`read()`接受三个参数:文件描述符、缓冲区地址和要读取的字节数。它会将读取到的数据存放在缓冲区,并返回实际读取的字节数。如果到达文件末尾或发生错误...

    DiskID read/write磁盘读写

    磁盘读写是计算机操作中最基础且至关重要的环节,它涉及到数据存储、系统运行和文件管理等多个方面。本文将深入探讨“DiskID read/write”这一主题,主要关注磁盘读写的基本原理及其在VC(Visual C++)环境下的实现...

    Matlab MP3readwrite 代码

    `MP3readwrite`通过解码MP3文件来获取原始音频数据,同样会返回采样率和位深度,使得处理过程与`wavread`保持一致。 对于写入操作,`wavwrite`能够将双精度浮点型或整型数据写入WAV文件。`MP3write`则是实现将...

    自动修复内存不能READ/WRITE的错误工具

    "READ"错误通常表示系统无法从内存获取数据,而"WRITE"错误则意味着无法将数据存储到内存中。这些问题可能由内存条损坏、驱动程序不兼容、内存超频设置不当或系统资源冲突等因素引起。 标签中的"自动修复"强调了...

    PEP人教版小学英语五年级下册Unit 5 B Read and write教学反思.pdf

    PEP人教版小学英语五年级下册Unit 5 B Read and write教学反思.pdf

    HID-read&write;

    总之,HID-read&write涉及到使用Visual Studio 2010和HID协议来实现对HID设备的读写操作。这个过程需要深入理解HID报告结构、设备驱动编程以及Windows驱动开发的相关知识。提供的压缩文件可能包含了完成这一任务的...

    Comport-Read-Write.rar_comport write_write串口处理_串口 数据_串口操作_串口数据

    串口读取(Read)数据则涉及接收来自串口的数据。这通常需要设置一个缓冲区来存储接收到的数据,并使用类似`ReadFile`的函数进行读取。读取过程中,需要处理中断事件,以确保及时响应数据的到来,同时还需要考虑数据...

    加锁的管道read和write

    进程间客通过管道,用read 和 write来传递数据,但不能同时进行,管道中只能存有4096 的字节被缓冲。

    程序员面试之零拷贝技术解析.pdf,这是一份不错的文件

    零拷贝技术是一个思想,指的是计算机执行操作时,CPU 不需要先将数据从某处内存复制到另一个特定区域。零拷贝技术的特点是 CPU 不再全程负责内存中的数据写入其他组件,CPU 仅仅起到管理的作用。零拷贝技术的实现...

    Basic Serial Write and Read.rar

    本资料包“Basic Serial Write and Read.rar”正是基于LabVIEW2013,深入探讨了如何进行串行数据的读写操作,这对于理解LabVIEW中的串行通信至关重要。 串行通信是计算机通信的一种方式,通过串行端口(如RS-232、...

    BLE4.0读写示例(read and write)

    标题 "BLE4.0读写示例(read and write)" 涉及的是蓝牙低功耗技术(Bluetooth Low Energy, 简称BLE或Bluetooth LE)中的一个重要功能,即设备之间的数据通信。BLE4.0是蓝牙技术联盟在蓝牙4.0标准中引入的一种新的...

    ReadWrite_ds2431readwrite_DS2431_

    描述中的“ds2431 read write software”暗示这个软件是用来与DS2431芯片进行数据交互的,允许用户读取当前的温度值并可能写入配置信息,如报警阈值等。这种类型的软件通常包含驱动程序和用户界面,使得开发者或用户...

    解决内存不能为read,write两类错误增强版.rar

    以上步骤提供了从简单到复杂的一系列解决方案,逐步排查可能导致“内存不能为read”或“内存不能为write”的问题。在每个步骤之后,都需要重启电脑以验证问题是否得到解决。记住,处理这类问题需要耐心,不要一次性...

    mp3read and mp3write 完整打包

    mp3read and mp3write for matlab(for windows),MATLAB两函数mp3read和mp3write,MATLAB两函数mp3read和mp3write 欢迎下载

Global site tag (gtag.js) - Google Analytics