Java使用递归复制文件夹及文件夹

网友投稿 284 2022-12-07


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 Filehttp://OutputStream(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();

}

}

}


版权声明:本文内容由网络用户投稿,版权归原作者所有,本站不拥有其著作权,亦不承担相应法律责任。如果您发现本站中有涉嫌抄袭或描述失实的内容,请联系我们jiasou666@gmail.com 处理,核实后本网站将在24小时内删除侵权内容。

上一篇:springboot+idea热部署的实现方法(自动刷新)
下一篇:Java Thread之Sleep()使用方法总结
相关文章

 发表评论

暂时没有评论,来抢沙发吧~