import java.io.*;
/**
* @author aachen0
* @date 2018/4/9 16:45
* IDE:IntelliJ IDEA
*/
public class DirCopy
{
public static void main
(String
[] args
) {
File fileSrc =
new File
("D:\\a");
// 要拷贝的源文件夹C
File fileDest =
new File
("C:\\b");
// 要拷贝到的目标文件夹
copy(fileSrc, fileDest
);
}
/**
* @param fileSrc 复制源目录
* @param fileDest 复制目标目录
*/
public static void copy
(File fileSrc, File fileDest
) {
fileDest.mkdir
();
// 先创建目标文件目录
File
[] files = fileSrc.listFiles
();
// 定义一个文件对象数组用来存储当前源目录下的所有对象
for (int i =
0; i < files.
length; i++
) {// 遍历源目录下的文件对象
if (files
[i
].isDirectory
()) {// 如果文件对象是一个目录,则递归调用copy方法
copy(files
[i
],
new File
(fileDest.getAbsolutePath
() +
"\\" + files
[i
].getName
()));
} else {
File toFile =
new File
(fileDest.getAbsolutePath
() +
"\\" + files
[i
].getName
());
// files[i].renameTo(toFile);// 如果是一个文件则调用rename方法实现拷贝
myCopyFile(files
[i
], toFile
);
// 调用自写的文件拷贝方法
}
}
}
private static void myCopyFile
(File file, File toFile
) {
FileInputStream fileInputStream =
null;
FileOutputStream fileOutputStream =
null;
try {
fileInputStream =
new FileInputStream
(file
);
fileOutputStream =
new FileOutputStream
(toFile
);
byte[] buffer =
new byte[1024];
int lenght =
0;
try {
while (-
1 !=
(lenght = fileInputStream.read
(buffer
))) {
fileOutputStream.write
(buffer,
0, lenght
);
}
} catch (IOException e
) {
e.printStackTrace
();
}
} catch (FileNotFoundException e
) {
e.printStackTrace
();
} finally {
if (null != fileOutputStream
) {
try {
fileOutputStream.close
();
} catch (IOException e
) {
e.printStackTrace
();
}
}
if (null != fileInputStream
) {
try {
fileInputStream.close
();
} catch (IOException e
) {
e.printStackTrace
();
}
}
}
}
}