Java字节流实现文件夹的拷贝

import java.io.File;
import java.io.FileInputStream;
import java.io.FileOutputStream;
import java.io.IOException;
import java.io.InputStream;
import java.io.OutputStream;
/**

  • java字节流实现文件夹的拷贝
  • 拷贝文件夹,其中文件夹中又有多个文件
  • 1.先遍历这个文件夹,判断是否是目录
  • 2.创建文件夹
  • 3.拷贝文件到新的地方
  • */
    public class FileDirectoryCopyDemo {
    //遍历文件夹
    public static void copy(File srcDir,File destDir){
    //遍历srcDir文件夹
    File[] list=srcDir.listFiles();
    for(File f:list){
    //先判断是否是目录,在目录文件夹里创建一个子目录
    if(f.isDirectory()){
    String name=f.getName(); //获取目录的名字
    //调用方法去目录文件夹里创建子目录
    File newDestDir=makeDir(destDir,name);
    //递归
    copy(f,newDestDir);
    }else{
    //如果不是目录,就拷贝文件
    File dest=new File(destDir,f.getName());
    fileCopy(f,dest);
    }
    }
    }
    public static File makeDir(File parent,String name){
    File f=new File(parent,name);
    f.mkdir();//创建文件夹
    return f;
    }
    //文件拷贝函数
    public static void fileCopy(File src,File dest){
    InputStream in=null; //输入流,负责读文件
    OutputStream out=null; //输出流,负责写入文件
    try{
    in=new FileInputStream(src);
    out=new FileOutputStream(dest);
    long start=System.currentTimeMillis();
    //定义缓冲区
    byte[] buffer=new byte[1024];
    int len=-1;

        while((len=in.read(buffer))!=-1)//说明还没有读到文件的结尾
        {
            out.write(buffer,0,len);   //输出流写入一个字节
        }
        long end=System.currentTimeMillis();
        //文件夹下有几个文件就耗时几次
        System.out.println("拷贝文件耗时:"+(end-start)+"毫秒");
    }catch(Exception e){
        e.printStackTrace();
    }finally{
        try {
            in.close();
            out.close();
        } catch (IOException e) {
            // TODO Auto-generated catch block
            e.printStackTrace();
        }
    }

    }
    public static void main(String[] args) {
    // TODO Auto-generated method stub
    //拷贝之前的原文件 haha是个文件夹
    File src=new File("D:"+File.separator+"haha");
    //拷贝之后的文件
    File dest=new File("F:"+File.separator+"haha");
    if(!dest.exists()){
    dest.mkdir(); //创建文件夹
    }
    copy(src,dest);
    }(<a href="http://www.dztcsd.com/">资质代办</a>)
    }


作者: 霜花似雪 
来源:慕课网
本文原创发布于慕课网 ,转载请注明出处,谢谢合作!
  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值