2012-05-10 63 views
1

我正在一個項目中工作,我只需要將丟失的文件從一個目錄複製到另一個目錄。我怎樣才能做到這一點?看在網的每一個地方,我無法找到解決方案這裏是代碼複製完整的目錄,但不僅僅是缺少的文件。請幫忙。Java只複製丟失的文件從目錄到另一個

import java.io.File; 
import java.io.FileInputStream; 
import java.io.FileOutputStream; 
import java.io.IOException; 
import java.io.InputStream; 
import java.io.OutputStream; 

public class cFiles { 
    public static void main(String[] args) { 
     File srcFolder = new File("C://Source/"); 
     File destFolder = new File("C://Client/"); 
     // make sure source exists 
     if (!srcFolder.exists()) { 
      System.out.println("Directory does not exist."); 
      // just exit 
      System.exit(0); 
     } else { 
      try { 
       copyFolder(srcFolder, destFolder); 
      } catch (IOException e) { 
       e.printStackTrace(); 
       // error, just exit 
       System.exit(0); 
      } 
     } 

     System.out.println("Done"); 
    } 
    public static void copyFolder(File src, File dest) throws IOException { 
     if (src.isDirectory()) { 
      // if directory not exists, create it 
      if (!dest.exists()) { 
       dest.mkdirs(); 
       System.out.println("Directory copied from " + src + " to " 
         + dest); 
      } 
      // list all the directory contents 
      String files[] = src.list(); 
      for (String file : files) { 
       // construct the src and dest file structure 
       File srcFile = new File(src, file); 
       File destFile = new File(dest, file); 
       // recursive copy 
       copyFolder(srcFile, destFile); 
      } 
      // Copying Files// 
     } else { 
      // if file, then copy it 
      // Use bytes stream to support all file types 
      InputStream in = new FileInputStream(src); 
      OutputStream out = new FileOutputStream(dest); 
      byte[] buffer = new byte[1024]; 
      int length; 
      // copy the file content in bytes 
      while ((length = in.read(buffer)) > 0) { 
       out.write(buffer, 0, length); 
      } 

      in.close(); 
      out.close(); 
      System.out.println("File copied from " + src + " to " + dest); 
     } 
    } 
} 

回答

1

您的代碼幾乎完成!如果目標文件已經存在,您只需添加一個檢查。

做這樣的:

 // Copying Files// 
    } else if (!dest.exists()) { 
     // if file, then copy it 
     // Use bytes stream to support all file types 
     InputStream in = new FileInputStream(src); 
     OutputStream out = new FileOutputStream(dest); 
相關問題