1

我正在一个项目中工作,我必须只将丢失的文件从一个目录复制到另一个目录。我怎样才能做到这一点?看了网上的每一个地方,我找不到这里的解决方案是复制完整目录的代码,而不仅仅是丢失的文件。请帮忙。

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);
        }
    }
}
4

1 回答 1

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);
于 2012-05-10T10:54:23.060 回答