使用java代码拷贝目录

关于如何使用java代码拷贝目录,可能还存在bug
整体使用了递归进行遍历所有的目录并创建
至于为什么选择FileInputStream这个类,是因为我们目录中不止有普通文件,所以不选择FileReader

import java.io.*;

public class HomeWork_Copy {

    public static void main(String[] args) throws Exception {
        // 目的, 将D盘下的JavaNote文件移到C盘下
        File f = new File("D:\\JavaNote");

        File f1 = new File("C:");

        // 防止第一个读取的是文件,防止出现找不到路径的情况
        if (!(new File(f1.getAbsolutePath() + f.getAbsolutePath().substring(2)).exists())){
            new File(f1.getAbsolutePath() + f.getAbsolutePath().substring(2)).mkdirs();
        }

        copy(f,f1);

    }
    public static void copy(File f, File f1) throws IOException{
       if (f.isFile()){
            FileInputStream fis = new FileInputStream(f.getAbsolutePath());
            FileOutputStream fos = new FileOutputStream(f1.getAbsolutePath() + f.getAbsolutePath().substring(2));
			// 读取和写入文件操作
            int readData = 0;
            byte[] bytes = new byte[1024 * 1024];
            while((readData = fis.read(bytes)) != -1){
                fos.write(bytes, 0, readData);
            }

            fos.flush();
            fis.close();
            fos.close();
            return;
        }

        File[] files = f.listFiles();

        for (File file : files) {
            if (file.isDirectory()) {
            // 这里其实存在一个bug,但是我没改,可以使用三目运算符进行判断
            // 一般来说复制的盘目录会自带'\\' 例如"C:\\"
            // 如果不是直接拷贝在盘下的话,直接复制在盘中的目录下,"C:\\a\\b"结尾是不带"\\",所以可以使用三目运算符判断一下
                String f4 = f1.getAbsolutePath() + file.getAbsolutePath().substring(2);
                if (!new File(f4).exists()) new File(f4).mkdirs();
            }
            copy(file, f1);
        }
    }
}
  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值