案例:复制多级目录及其中的文本文件

        之前学习了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);
    }
}

经过不断地改错和测试,最终也是完成了功能,不过可能不是那么精妙就是了。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值