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