How to copy directory in Java
copy
directory
folder
java
Here is an example how to copy a directory and all its sub-directories and files to a new destination directory.
Example
package com.admfactory.io;
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 CopyDirectory {
/***
* Copy file method using classic approach by using streams.
*
* @param source
* file
* @param dest
* file
* @throws IOException
*/
private static void copyFile(File source, File dest) throws IOException {
InputStream input = null;
OutputStream output = null;
try {
input = new FileInputStream(source);
output = new FileOutputStream(dest);
byte[] buf = new byte[1024];
int bytesRead;
while ((bytesRead = input.read(buf)) > 0) {
output.write(buf, 0, bytesRead);
}
System.out.println("File copied from " + source + " to " + dest);
} catch (Exception e) {
e.printStackTrace();
} finally {
if (input != null)
input.close();
if (output != null)
output.close();
}
}
private static void copyFolder(File source, File dest) throws IOException {
if (source.isDirectory()) {
if (!dest.exists()) {
dest.mkdirs();
System.out.println("Directory copied from " + source + " to " + dest);
}
String files[] = source.list();
for (String file : files) {
/**
* construct the src and dest file structure by adding the
* current folder
*/
File srcFile = new File(source, file);
File destFile = new File(dest, file);
/** recursive copy the files or sub-folders */
copyFolder(srcFile, destFile);
}
} else {
copyFile(source, dest);
}
}
public static void main(String[] args) throws Exception {
System.out.println("Copy Directory Example");
System.out.println();
File dirSrc = new File("D:\\admfactory.com\\dir1");
File dirDest = new File("D:\\admfactory.com\\dir2");
copyFolder(dirSrc, dirDest);
}
}
To copy files I used the classic approach of using streams, but you can use also any methods described on the How to copy files in Java tutorial.
Output
Copy Directory Example
Directory copied from D:\admfactory.com\dir1\dir3 to D:\admfactory.com\dir2\dir3
Directory copied from D:\admfactory.com\dir1\dir3\dir4 to D:\admfactory.com\dir2\dir3\dir4
File copied from D:\admfactory.com\dir1\dir3\dir4\f6.txt to D:\admfactory.com\dir2\dir3\dir4\f6.txt
File copied from D:\admfactory.com\dir1\dir3\dir4\f7.txt to D:\admfactory.com\dir2\dir3\dir4\f7.txt
File copied from D:\admfactory.com\dir1\dir3\f4.txt to D:\admfactory.com\dir2\dir3\f4.txt
File copied from D:\admfactory.com\dir1\dir3\f5.txt to D:\admfactory.com\dir2\dir3\f5.txt
File copied from D:\admfactory.com\dir1\f1.txt to D:\admfactory.com\dir2\f1.txt
File copied from D:\admfactory.com\dir1\f2.txt to D:\admfactory.com\dir2\f2.txt
File copied from D:\admfactory.com\dir1\f3.txt to D:\admfactory.com\dir2\f3.txt