package com.blb.text7;
import java.io.File;
import java.io.FileInputStream;
import java.io.FileNotFoundException;
import java.io.FileOutputStream;
import java.util.Iterator;
public class Demo11 {
public static void main(String[] args) throws Exception {
// 拷贝源
File srcFile = new File("D:\\ShellExt");
// 拷贝目标
File destFile = new File("E:\\");
// 调用方法拷贝
copyDir(srcFile,destFile);
}
/*
* 拷贝目录
* srcFile 拷贝源
* destFile 拷贝目标
*/
private static void copyDir(File srcFile, File destFile) throws Exception {
if (srcFile.isFile()) {
// srcFile如果是一个文件的话,递归结束
// 是文件的时候需要拷贝
// ...一边读一边写
// 读这个文件
FileInputStream fis = new FileInputStream(srcFile);
// 写到这个文件中
String path = (destFile.getAbsolutePath().endsWith("\\") ? destFile.getAbsolutePath() : destFile.getAbsoluteFile()+"\\") + srcFile.getAbsolutePath().substring(3);;
FileOutputStream fos = new FileOutputStream(path);
// 一边读一边写
byte[] b = new byte[1024 * 1024];
int readCount=0;
while ((readCount = fis.read(b))!=-1) {
fos.write(b,0,readCount);
}
fos.close();
fis.close();
return;
}
// 获取源下面的子目录
File[] files = srcFile.listFiles();
// System.out.println(files.length);// 广度搜索
for (File file : files) {
// 获取所有文件的(包括目录和文件)绝对路径
// System.out.println(file.getAbsolutePath());
if (file.isDirectory()) {
// 新建对应的目录
// System.out.println(file.getAbsolutePath());
// D:\ShellExt\installer 源目录
// C:\ShellExt\installer 目标目录
String srcDir = file.getAbsolutePath();
String destDir = (destFile.getAbsolutePath().endsWith("\\") ? destFile.getAbsolutePath() : destFile.getAbsoluteFile()+"\\") + srcDir.substring(3);
// System.out.println(destDir);
File newFile = new File(destDir);
if(!newFile.exists()) {
newFile.mkdirs();
}
}
// 递归调用
copyDir(file, destFile);
}
}
}
Java目录拷贝
最新推荐文章于 2023-09-06 18:30:07 发布