Wie kopiert man ein Verzeichnis in Java?

So kopieren Sie ein Verzeichnis in Java

Hier ist ein Beispiel zum Kopieren eines Verzeichnisses und aller seiner Unterverzeichnisse und Dateien in ein neues Zielverzeichnis. Der Code ist voller Kommentare und selbsterklärend. Ich habe einen Kommentar hinterlassen, wenn Sie weitere Erklärungen benötigen.

Beispiel

Kopieren Sie den Ordner „c:\example“ und seine Unterverzeichnisse und Dateien in einen anderen neuen Ordner „c:\example-new“.

package com.example.file;

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 CopyDirectoryExample
{
    public static void main(String[] args)
    {
        File srcFolder = new File("c:\\example");
        File destFolder = new File("c:\\example-new");

        //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.mkdir();
               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);
            }

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

Ergebnis

Directory copied from c:\example  to c:\example-new
File copied from c:\example\404.php to c:\example-new\404.php
File copied from c:\example\footer.php to c:\example-new\footer.php
File copied from c:\example\js\superfish.css to c:\example-new\js\superfish.css
File copied from c:\example\js\superfish.js to c:\example-new\js\superfish.js
File copied from c:\example\js\supersubs.js to c:\example-new\js\supersubs.js
Directory copied from c:\example\images  to c:\example-new\images
File copied from c:\example\page.php to c:\example-new\page.php
Directory copied from c:\example\psd  to c:\example-new\psd
...
Done