复制文件夹
public class Test {
public static void main(String[] args) {
//要复制的文件夹和要复制到的地方
copyDir("E:\\搜狗输入法", "E:\\aa");
}
/**
* 复制文件夹含子目录
* @param dirName 传过来要复制的文件
* @param getName 要复制到新的文件夹地址
*/
private static void copyDir(String dirName, String getName) {
//创建一个目的文件夹
File file = new File(getName);
if (!file.exists()) {
file.mkdirs();
}
//复制源文件夹下的所有文件到目的文件夹
File file1 = new File(dirName);
//文件夹下所有的文件和子文件夹
File[] files = file1.listFiles();
for (File ele : files) {
//如果是文件就复制
if (ele.isFile()) {
copyFile(dirName + "/" + ele.getName(), getName + "/" + ele.getName());
}
//如果是文件夹,就递归
if (ele.isDirectory()) {
copyDir(dirName + "/" + ele.getName(), getName + "/" + ele.getName());
}
}
}
/**
* 复制文件夹
* @param sourceName
* @param targetName
*/
private static void copyFile(String sourceName, String targetName) {
try (
//1.创建一个输入流和输出流
BufferedInputStream bis = new BufferedInputStream(new FileInputStream(new File(sourceName)));
BufferedOutputStream bos = new BufferedOutputStream(new FileOutputStream(new File(targetName)));
) {
//2.使用输入流和输出流完成文件复制
byte[] bytes = new byte[8192];
int length = 0;
while ((length = bis.read(bytes)) != -1) {
bos.write(bytes, 0, length);
}
} catch (Exception e) {
e.printStackTrace();
}
}
}