Commons IO

 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 ));

發佈了84 篇原創文章 · 獲贊 15 · 訪問量 53萬+
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章