程式扎記: [ Java代碼範本 ] 進行檔案複製/移動

標籤

2010年7月29日 星期四

[ Java代碼範本 ] 進行檔案複製/移動

前言 :
這裡的範例程式將會示範將某個檔案進行複製到另一個檔案. 透過函數:copyfile, 並傳入兩個參數 argu:srFile 與 argu:dtFile, 完成將第一個參數指定的檔案複製到第二個參數指定的檔案. 函數的呼叫如下 :
copyfile(String srFile, String dtFile);

再函數:copyfile(String srFile, String dtFile) 首先將傳入的兩個參數分別為其建立File 物件如下 :
File f1 = new File(srFile);
File f2 = new File(dtFile); 


將著將其建立的 File 物件傳入建立的FileInputStream (來源檔案) 與 FileOutputStream (目的檔案), 準備進行檔案複製動作 :
InputStream in = new FileInputStream(f1);
OutputStream out = new FileOutputStream(f2);


為了增加複製的效率, 故採用了Buffer 來降低頻繁的IO動作, 參考如下 :
// For creating a byte type buffer
byte[] buf = new byte[1024];
// For writing to another specified file from buffer buf
out.write(buf, 0, len);

範例代碼 :
* CopyFile 類別代碼 : 
import java.io.*;

public class CopyFile{
  private static void copyfile(String srFile, String dtFile){
    try{
      File f1 = new File(srFile);
      File f2 = new File(dtFile);
      InputStream in = new FileInputStream(f1);
      
      //For Append the file.
//      OutputStream out = new FileOutputStream(f2,true);

      //For Overwrite the file.
      OutputStream out = new FileOutputStream(f2);

      byte[] buf = new byte[1024];
      int len;
      while ((len = in.read(buf)) > 0){
        out.write(buf, 0, len);
      }
      in.close();
      out.close();
      System.out.println("File copied.");
    }
    catch(FileNotFoundException ex){
      System.out.println(ex.getMessage() + " in the specified directory.");
      System.exit(0);
    }
    catch(IOException e){
      System.out.println(e.getMessage());      
    }
  }
  public static void main(String[] args){
    switch(args.length){
      case 0: System.out.println("File has not mentioned.");
          System.exit(0);
      case 1: System.out.println("Destination file has not mentioned.");
          System.exit(0);
      case 2: copyfile(args[0],args[1]);
          System.exit(0);
      default : System.out.println("Multiple files are not allow.");
            System.exit(0);
    }
  }
}

沒有留言:

張貼留言

網誌存檔

關於我自己

我的相片
Where there is a will, there is a way!