Java使用递归复制文件夹及文件夹
时间:2021-03-17 09:39:23|栏目:JAVA代码|点击: 次
递归调用copyDir方法实现,查询源文件目录使用字节输入流写入字节数组,如果目标文件目录没有就创建目录,如果迭代出是文件夹使用字节输出流对拷文件,直至源文件目录没有内容。
/**
* 复制文件夹
* @param srcDir 源文件目录
* @param destDir 目标文件目录
*/
public static void copyDir(String srcDir, String destDir) {
if (srcRoot == null) srcRoot = srcDir;
//源文件夹
File srcFile = new File(srcDir);
//目标文件夹
File destFile = new File(destDir);
//判断srcFile有效性
if (srcFile == null || !srcFile.exists())
return;
//创建目标文件夹
if (!destFile.exists())
destFile.mkdirs();
//判断是否是文件
if (srcFile.isFile()) {
//源文件的绝对路径
String absPath = srcFile.getAbsolutePath();
//取出上级目录
String parentDir = new File(srcRoot).getParent();
//拷贝文件
copyFile(srcFile.getAbsolutePath(), destDir);
} else { //如果是目录
File[] children = srcFile.listFiles();
if (children != null) {
for (File f : children) {
copyDir(f.getAbsolutePath(), destDir);
}
}
}
}
/**
* 复制文件夹
*
* @param path 路径
* @param destDir 目录
*/
public static void copyFile(String path, String destDir) {
FileInputStream fis = null;
FileOutputStream fos = null;
try {
/*
准备目录
取出相对的路径
创建目标文件所在的文件目录
*/
String tmp = path.substring(srcRoot.length());
String folder = new File(destDir, tmp).getParentFile().getAbsolutePath();
File destFolder = new File(folder);
destFolder.mkdirs();
System.out.println(folder); //创建文件输入流
fis = new FileInputStream(path);
//定义新路径
//创建文件 输出流
fos = new FileOutputStream(new File(destFolder,new File(path).getName()));
//创建字节数组进行流对拷
byte[] buf = new byte[1024];
int len = 0;
while ((len = fis.read(buf)) != -1) {
fos.write(buf, 0, len);
}
} catch (IOException ex) {
ex.printStackTrace();
} finally {
try {
fis.close();
fos.close();
} catch (IOException e) {
e.printStackTrace();
}
}
}
上一篇:J2ME编程中的几个重要概念介绍
栏 目:JAVA代码
下一篇:创建网关项目(Spring Cloud Gateway)过程详解
本文标题:Java使用递归复制文件夹及文件夹
本文地址:http://www.codeinn.net/misctech/82214.html


阅读排行
- 1Java Swing组件BoxLayout布局用法示例
- 2java中-jar 与nohup的对比
- 3Java邮件发送程序(可以同时发给多个地址、可以带附件)
- 4Caused by: java.lang.ClassNotFoundException: org.objectweb.asm.Type异常
- 5Java中自定义异常详解及实例代码
- 6深入理解Java中的克隆
- 7java读取excel文件的两种方法
- 8解析SpringSecurity+JWT认证流程实现
- 9spring boot里增加表单验证hibernate-validator并在freemarker模板里显示错误信息(推荐)
- 10深入解析java虚拟机




