<rt id="bn8ez"></rt>
<label id="bn8ez"></label>

  • <span id="bn8ez"></span>

    <label id="bn8ez"><meter id="bn8ez"></meter></label>

    athrunwang

    紀元
    數據加載中……
    Java實現文件的復制和新Nio包通道的運用--Thinking in java
    首先是二進制讀取文件成為字節的代碼

      

    1. package com.bird.thinking;  
    2.   
    3. import java.io.BufferedInputStream;  
    4. import java.io.File;  
    5. import java.io.FileInputStream;  
    6. import java.io.FileNotFoundException;  
    7. import java.io.IOException;  
    8.   
    9. /** 
    10.  * @use 讀取二進制文件 
    11.  * @author Bird 
    12.  * 
    13.  */  
    14. public class BinaryFile {  
    15.     public static byte[] read(File bFile) throws FileNotFoundException{  
    16.         BufferedInputStream bf = new BufferedInputStream(new FileInputStream(bFile));//構建讀取流  
    17.         try{  
    18.             byte[] data = new byte[bf.available()];//構建緩沖區  
    19.             bf.read(data);  
    20.             return data;  
    21.         } catch (IOException e) {  
    22.             throw new RuntimeException(e);//改變成運行時異常  
    23.         }finally{  
    24.             try {  
    25.                 bf.close();  
    26.             } catch (IOException e) {  
    27.                 throw new RuntimeException(e);  
    28.             }  
    29.         }  
    30.           
    31.     }  
    32.       
    33.       
    34.     public static byte[] read(String bFile) throws FileNotFoundException{//重載構造方法  
    35.         return read(new File(bFile).getAbsoluteFile());  
    36.     }  
    37.       
    38.     public static void main(String [] args) throws FileNotFoundException{  
    39.         for(byte a: read("d://book.xml"))  
    40.             System.out.print(a);  
    41.     }  
    42. }  



    下面是包裝JAVA的控制臺輸入實現回顯功能

    1. package com.bird.thinking;  
    2.   
    3. import java.io.BufferedReader;  
    4. import java.io.IOException;  
    5. import java.io.InputStreamReader;  
    6.   
    7. /** 
    8.  * @use 從控制臺輸入并且回顯 
    9.  * @author Bird 
    10.  * 
    11.  */  
    12. public class Echo {  
    13.     public static void main(String [] args) throws IOException{  
    14.         BufferedReader stdin = new BufferedReader(new InputStreamReader(System.in));//將輸入流包裝成BufferedReader  
    15.         String s = null;  
    16.         while((s = stdin.readLine()) != null && s.length() !=0){  
    17.             System.out.println(s);  
    18.             if(s.equals("exit"))  
    19.                 break;  
    20.         }  
    21.     }  
    22. }  



    下面是使用NIO包的通道功能讀取并且寫入文件,并在文件的末尾追加內容

    1. package com.bird.thinking;  
    2.   
    3. import java.io.FileOutputStream;  
    4. import java.io.RandomAccessFile;  
    5. import java.nio.ByteBuffer;  
    6. import java.nio.channels.FileChannel;  
    7.   
    8. /** 
    9.  * @use 新nio包的通道讀取文件 
    10.  * @author Bird 
    11.  * 
    12.  */  
    13. public class GetChannel {  
    14.       
    15.     public static void main(String [] args) throws Exception{  
    16.         FileChannel fc = new FileOutputStream("d://bird.txt").getChannel();//建立讀取通道  
    17.         fc.write(ByteBuffer.wrap(BinaryFile.read("d://book.xml")));//獲得字節流并且通過通道寫入  
    18.         fc.close();  
    19.           
    20.         Thread.sleep(500);//等待磁盤寫入數據完畢  
    21.           
    22.         fc = new RandomAccessFile("d://bird.txt","rw").getChannel();//隨機讀取,對文件末尾追加內容  
    23.         fc.position(fc.size());//調整文件指針的位置到文件的末尾  
    24.         fc.write(ByteBuffer.wrap("哥再加一點".getBytes()));//在文件末尾加入這幾個字  
    25.         fc.close();       
    26.     }  
    27.       
    28.   
    29. }  



    下面是對文件的復制

    1. package com.bird.thinking;  
    2.   
    3. import java.io.FileInputStream;  
    4. import java.io.FileOutputStream;  
    5. import java.io.IOException;  
    6. import java.nio.ByteBuffer;  
    7. import java.nio.channels.FileChannel;  
    8.   
    9. /** 
    10.  *  
    11.  * @author Bird 
    12.  * @use 文件的復制 
    13.  */  
    14. public class ChannelCopy {  
    15.     private static final int BSIZE = 1024;//文件緩沖字節區,大小可以自己定  
    16.     public static void main(String [] args) throws IOException{  
    17.         FileChannel in = new FileInputStream("d://book.xml").getChannel();//得到輸入通道  
    18.         FileChannel out = new FileOutputStream("d://bird.xml").getChannel();//得到輸出通道  
    19.         ByteBuffer buffer = ByteBuffer.allocate(BSIZE);//設定緩沖區  
    20.         while(in.read(buffer) != -1){  
    21.             buffer.flip();//準備寫入,防止其他讀取,鎖住文件  
    22.             out.write(buffer);  
    23.             buffer.clear();//準備讀取。將緩沖區清理完畢,移動文件內部指針  
    24.         }  
    25.     }  

    posted on 2012-01-02 14:19 AthrunWang 閱讀(599) 評論(0)  編輯  收藏


    只有注冊用戶登錄后才能發表評論。


    網站導航:
     
    主站蜘蛛池模板: 亚洲情A成黄在线观看动漫软件| 久久精品视频亚洲| 亚洲另类无码一区二区三区| 免费阿v网站在线观看g| 亚洲成a人片在线网站| 精品成在人线AV无码免费看 | 野花高清在线观看免费3中文| 亚洲电影免费观看| 1000部无遮挡拍拍拍免费视频观看| 亚洲高清视频在线观看| 免费国产黄网站在线观看| 亚洲美女视频一区| 2021久久精品免费观看| 亚洲熟妇AV乱码在线观看| 日本牲交大片免费观看| 一级做a爰黑人又硬又粗免费看51社区国产精品视 | 羞羞漫画登录页面免费| 亚洲国产a级视频| 国产在线国偷精品免费看| 亚洲va久久久噜噜噜久久| 久久久久久久岛国免费播放| 亚洲成a人片在线观看中文!!!| 最近中文字幕无吗免费高清| 精品久久久久久亚洲综合网| 中文字幕亚洲电影| 91香蕉国产线观看免费全集| 亚洲中文字幕日本无线码| 免费观看国产小粉嫩喷水| 国产一级一毛免费黄片| 亚洲日本国产乱码va在线观看| 成熟女人特级毛片www免费| 免费无码午夜福利片| 亚洲av无码不卡一区二区三区| 国色精品卡一卡2卡3卡4卡免费| 日韩国产欧美亚洲v片| 亚洲精品成人片在线观看精品字幕 | 亚洲成人高清在线观看| 国产乱子伦片免费观看中字| a级片免费观看视频| 日本亚洲精品色婷婷在线影院| 亚洲国产精品自在拍在线播放|