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 に答える