之前学习了File类,到现在也忘得差不多了,今天刚好一起复习一下,这次我用了递归调用的方法复制文件夹中的文件。
import java.io.*;
public class demo {
public static void copy(File file) throws IOException {
// 用listFiles方法把要复制的文件夹的所有文件(文件夹)作为一个File对象存放到数组
File[] s=file.listFiles();
// 拼接文件复制的目的地,不知道为什么substring从2开始才能把C:给截掉
File file1=new File("C:\\copy"+file.getAbsolutePath().substring(2));
// 判断这个目的地是否存在,如果不存在就创建
if(!file1.exists()){
file1.mkdir();
}
// 遍历刚才得到的File数组
for(File f:s){
// 如果这个File对象指的是个文件,就用字符缓冲流赋值到目的地
if(f.isFile()){
BufferedReader br=new BufferedReader(new FileReader(f));
String s2=file1.getAbsoluteFile()+"\\"+f.getName();
BufferedWriter bw=new BufferedWriter(new FileWriter(s2));
String s1;
while ((s1=br.readLine())!=null){
bw.write(s1);
bw.newLine();
bw.flush();
}
br.close();
bw.close();
// 如果它不是个文件说明它是个文件夹,那就得到它的路径然后递归调用copy方法,直到没有文件夹
}else{
File file2=new File(String.valueOf(f.toPath()));
copy(file2);
}
}
}
public static void main(String[] args) throws IOException {
// 要复制的目录
File file=new File("C:\\data");
// 调用copy方法
copy(file);
}
}
经过不断地改错和测试,最终也是完成了功能,不过可能不是那么精妙就是了。