Javaでディレクトリをコピーする方法
ディレクトリとそのすべてのサブディレクトリとファイルを新しい宛先ディレクトリにコピーする例を次に示します。 コードにはコメントがたくさんあり、説明も必要ありませんが、さらに説明が必要な場合はコメントを残してください。
例
フォルダ「c:\example」とそのサブディレクトリおよびファイルを別の新しいフォルダ「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); } } }
結果
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