java I/O: 以字節形式複製文件

//運行命令帶有兩個參數,分別爲源文件和目標文件的路徑

//功能:將源文件的內容寫入目標文件 

import java.io.*;

public class binaryFileCopy {

 /**
  * @param args
  */
 /*public static void main(String[] args) {
  // TODO Auto-generated method stub
       DataInputStream instr;
       DataOutputStream outstr;
      
       try
       {
        instr=new DataInputStream(new BufferedInputStream(new FileInputStream(args[0])));
        outstr=new DataOutputStream(new BufferedOutputStream(new FileOutputStream(args[1])));
        if(args.length!=2)
        {System.out.println("請輸入正確文件路徑");
        return;}
        try{
         int a;
        while(true)
        {a= instr.readUnsignedByte();
        outstr.write(a);}
        }
        catch(EOFException eof)
        {
         instr.close();
         outstr.close();
         return;
        }
       }
       catch(FileNotFoundException fnfe)
       {
        System.out.println("the File not Found");
       }
       catch(IOException e)//try
       {
     System.out.println("problem copying");  
       }//catch
 }
*/
 
 public static void main(String[] args) {
  // TODO Auto-generated method stub
       DataInputStream instr;
       DataOutputStream outstr;
       File in=new File(args[0]);
       File out=new File(args[1]);
       if(args.length!=2)
    {System.out.println("請輸入正確文件路徑");
    return;}
      
       if(in.exists())
        in.delete();
       else
        try{
         in.createNewFile();
        }
           catch (IOException e)
           {System.out.println(e.getMessage());}
          
       if(out.exists())
        out.delete();
       else
        try{
         out.createNewFile();
        }
           catch (IOException e)
           {System.out.println(e.getMessage());}
      
       try
       {
        instr=new DataInputStream(new BufferedInputStream(new FileInputStream(in)));
        outstr=new DataOutputStream(new BufferedOutputStream(new FileOutputStream(out)));
       
        try{
         int a;
        while(true)
        {a= instr.readUnsignedByte();
        outstr.write(a);}
        }
        catch(EOFException eof)
        {
         instr.close();
         outstr.close();
         return;
        }
       }
   
       catch(IOException e)//try
       {
     System.out.println("problem copying");  
       }//catch
 } 
}

/*心得

FileOutPutStream是OutputStream的子類,可用作二進制數據寫入文件,構造函數可以是文件的路徑名或一個File類的對象DataOutputStream是OutputStream的子類,可連接到一個FileOutputStream上,中間套接BufferedOutputStream可增加輸出效率

DaInPutStream的readUnsignedByte()方法  用於返回此輸入流的下一個字節,將它解釋爲一個無符號的 8 位數字DataOutputStream的write()方法   將指定字節(參數 b 的八個低位)寫入基礎輸出流。如果沒有拋出異常,則計數器 written 增加 1。*/

 
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章