2012-05-10 65 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); 
相关问题