Javaでディレクトリをコピーする方法

次に、ディレクトリとそのすべてのサブディレクトリとファイルを新しいコピー先ディレクトリにコピーする例を示します。コードにはコメントがいっぱいで、わかりやすく、詳しい説明が必要な場合はコメントを残しました。

フォルダ「 c:\\ mkyong 」とそのサブディレクトリとファイルを別の新しいフォルダ「 c:\\ mkyong-new 」にコピーします。

package com.mkyong.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:\\mkyong");
        File destFolder = new File("c:\\mkyong-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);
        }
    }
}

結果

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

完了

リンク://タグ/ディレクトリ/[ディレクトリ]リンク://タグ/io/[io]リンク://タグ/java/[java]

前の投稿:春のブートと口ひげ - デフォルト値