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]