IO流 实现文件、目录的拷贝&字节流与字符流的比较

IO 字节流 实现文件及其子目录的拷贝&与字符流的比较


用IO流实现指定文件或目录的拷贝功能,如图,要将E:\blogs目录下的26.Git文件夹复制到G:\test目录下

26.Git文件夹的属性:?

       为了后面突出对比,在26.Git中放入了纯文本文件、视频文件、图片文件、pdf文件、exe文件以及一些非空的文件夹等等,如下:?

首先,用IO字节流实现文件以及子目录的拷贝:

  1. 如果要连同26.Git这个文件也一起拷贝,那么应该先在目标路径下先创建一个空的26.Git文件夹,并将其当成新的目标路径;如果只是想复制26.Git内的内容,可以省略这一步;
  2. 遍历源路径下的文件夹,将文件与子目录分开处理,文件直接拷贝,子目录再遍历,这里使用递归实现;
  3. 输入流实现对文件的读取功能,输出流实现对文件的写功能,拷贝我们可以理解为:从源文件读取信息,同时将读取到的信息写入到目标文件。
  4. 读写完成后,需要使用close()方法关闭流,先关闭输出流,再关闭输入流,这里将创建流写在了try后面的括号内,会自动帮我们关闭流。

?以下是代码实现,注释都比较详细:

import java.io.*;

/**
 * 使用IO字节流拷贝 E:\blogs\26.Git 到 G:\test 目录下
 */
public class CopyDirs {
   
    public static void main(String[] args) {
   
        //拷贝路径,双斜杆转义,也可以写成E:/blogs/26.Git
        String src = "E:\\blogs\\26.Git";
        //读取源路径下的文件
        File file = new File(src);
        //目标路径
        String dest = "G:\\test\\";
        //先在目标路径下创建要复制的文件夹,即26.Git,并将G:\test\26.Git作为目标路径,file.getName 获取文件名
        dest = dest + file.getName() + "\\";
        //mkdir(),创建文件夹,用于有一个层级的目录不存在的情况
        new File(dest).mkdir();
        //获取当前系统时间,这里主要想了解拷贝花费的时间,用于比较
        long start = System.currentTimeMillis();
        System.out.println("开始拷贝...");
        listDirs(src, dest);
        System.out.println("拷贝成功!");
        System.
  • 1
    点赞
  • 7
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值