阶段性复习与应用——复制多级文件夹
(请观看本人博文——《详解 字节流》)
首先,本人来展示下源文件夹的内容:
本人 就以这个三级文件夹为例,通过代码来实现对这个三级文件夹的复制操作:
首先,本人来提供下思路:
思路:
- 封装源文件夹 与 目标文件夹
- 遍历源文件夹,当:
-是文件时,在目标文件夹中完成复制操作
-是文件夹时,在目标文件夹中创建相同名称的文件夹,并通过递归 2步骤来填充目标文件夹的子文件夹
现在,本人来展示下代码:
import java.io.*;
public class Test {
public static void main(String[] args) throws IOException {
//封装源文件夹、封装目标文件夹
File srcFolder = new File("G:\\testFolder");
File targetFolder = new File("G:\\copyFolder");
if (!targetFolder.exists()) {
targetFolder.mkdirs();
}
//遍历源文件夹,把源文件夹中的,每一个文件复制到目标文件夹中
copyFolder(srcFolder, targetFolder);
}
private static void copyFolder(File srcFolder, File targetFolder) throws IOException {
//遍历源文件夹
File[] files = srcFolder.listFiles();
for (File f : files) {
if(f.isFile()){
//复制文件到,目标文件夹里面去
copyFiles(f, targetFolder);
} else {
//递归
File sonTargetFolder = new File(targetFolder.getAbsolutePath() + "/" + f.getName());
sonTargetFolder.mkdirs();
copyFolder(f, sonTargetFolder);
}
}
}
//复制文件的操作
private static void copyFiles(File f, File targetFolder) throws IOException {
FileInputStream in = new FileInputStream(f);
File file = new File(targetFolder, f.getName());
FileOutputStream out = new FileOutputStream(file);
int len=0;
byte[] bytes=new byte[1024*8];
while ((len=in.read(bytes))!=-1){
out.write(bytes,0,len);
}
//释放资源
in.close();
out.close();
}
}
那么,现在,让我们看看运行后所生成的文件夹的内容吧:
那么,可以看到,上面的代码完成了对多级文件夹的复制操作。
本人用了普通字节流来完成了文件的复制操作。
同样地,同学们也可以通过高效字节流来完成同样的操作。
(本人《详解 字节流》博文链接:https:////www.cnblogs.com/codderYouzg/p/12418463.html)
(本人“I/O流”总集篇博文链接:https:////www.cnblogs.com/codderYouzg/p/12418404.html)