310 复制多级文件夹
(复杂难懂的课)
(先抄下代码,彻底的理解掌握暂略)
【需求】
复制多级目录
数据源:C:\develper\310
目的地:myCharStream\src\e310
【思路】
(准备)(新建如图文件、文件夹)
- 创建 数据源File对象,C:\develper\30
- 创建 目的地File对象,myCharStream\src\e310
- 定义 方法,实现复制文件
- 判断 数据源File是否目录【递归】
- 是目录,则-1-复制目录-2-获取listFile数组-3-遍历数组,获取每个File对象-4-对该File对象调用递归方法,再次判断是否目录后地进行处理
- 不是目录,则复制该文件
--------------------------------------------------------------
【报错了】FileNotFoundException
【关键语句】
private static void copyFolder(File srcF, File destF) throws IOException {
if (srcF.isDirectory()) {
String srcFileName = srcF.getName();
File newFolder = new File(destF, srcFileName);
if (!newFolder.exists()) {
newFolder.mkdir();
}
File[] fileA = srcF.listFiles();
for (File dataSrc : fileA) {
copyFolder(dataSrc, newFolder);
}
} else {
File newFolder = new File(destF, srcF.getName());
copyFile(srcF, destF);
}
}
--------------------------------------------------------------
package e310;
import java.io.File;
import java.io.IOException;
public class Prepare {
public static void main(String[] args) throws IOException {
File f1 = new File("C:\\develper\\310\\ff");
File f2 = new File("C:\\develper\\310\\ff.jpg");
File f3 = new File("C:\\develper\\310\\ff.txt");
System.out.println(f1.mkdirs());
System.out.println(f2.createNewFile());
System.out.println(f3.createNewFile());
}
}
--------------------------------------------------------------
package e310;
import java.io.*;
public class CopyFoldersDemo {
public static void main(String[] args) throws IOException {
File srcF = new File("C:\\develper\\310");
File destF = new File("C:\\data");
//共需定义2个方法,分别实现复制目录、复制文件
copyFolder(srcF, destF);
}
private static void copyFolder(File srcF, File destF) throws IOException {
if (srcF.isDirectory()) {
String srcFileName = srcF.getName();
File newFolder = new File(destF, srcFileName);
if (!newFolder.exists()) {
newFolder.mkdir();
}
File[] fileA = srcF.listFiles();
for (File dataSrc : fileA) {
copyFolder(dataSrc, newFolder);
}
} else {
File newFolder = new File(destF, srcF.getName());
copyFile(srcF, destF);
}
}
private static void copyFile(File srcF, File destF) throws IOException {
BufferedInputStream bis = new BufferedInputStream(new FileInputStream(srcF));
BufferedOutputStream bos = new BufferedOutputStream(new FileOutputStream(destF));
byte[] bys = new byte[1024];
int len;
while ((len = bis.read()) != -1) {
bos.write(bys, 0, len);
}
bis.close();
bos.close();
}
}