JAVA实现拷贝目录及目录中的文件

首先我们要实现的是将一个目录及他的子目录还有目录中含有的文件拷贝到另一个目录下,目标目录中的文件及其目录要和源目录保持一致。
我们可以先梳理下思路,第一步我们先将源目录和目标目录创建出来,然后通过调用copy方法进行实现,具体实现方法我们在copy方法中进行是实现。
在copy中需要传递源目录及目标目录。
copy方法中的具体思路如下:
首先我们先获取源目录中的所有子文件,使用listFiles()方法,在得到源目录的所有子目录后,我们使用一个FILE数组进行接收,然后进行遍历,在遍历时如果遍历的是一个目录,那么递归调用copy方法,如果是一个文件那么return返回。并且在进行遍历时如果发现对象是一个目录需要进行对创建目标目录,而目标目录需要进行拼接生成。
具体的源码如下:
import java.io.*;

public class DirCopyTest {
public static void main(String[] args) {
File src=new File(“D:\java笔记\B站java学习笔记”);
File des =new File(“E:\”);
copy(src,des);
}

private static void copy(File src, File des) {

    //如果是文件那么递归结束copy调用,将文件进行复制操作
    if(src.isFile())
    {
        FileInputStream fis =null;//输入流
        FileOutputStream fos=null;//输出流
        try {
            fis=new FileInputStream(src);//获取源路径
            String path=des.getAbsolutePath()+src.getAbsolutePath().substring(3);//获取目标路径
            fos=new FileOutputStream(path);//将目标路径传入
            int k=0;
            //边读边写。
            byte [] b=new byte[1024*1024];
            while ((k= fis.read(b))!=-1)
            {
                fos.write(b,0,k);

            }

            fos.flush();
        } catch (FileNotFoundException e) {
            e.printStackTrace();
        } catch (IOException e) {
            e.printStackTrace();
        }finally {
            if (fos != null) {
                try {
                    fos.close();
                } catch (IOException e) {
                    e.printStackTrace();
                }
            }
            if (fis != null) {
                try {
                    fis.close();
                } catch (IOException e) {
                    e.printStackTrace();
                }
            }
        }

        return;
    }
    File []file =src.listFiles();//获取src下的所有子目录
    for (File f :file)//对File【】数组进行遍历
    {
        if(f.isDirectory())
        {

            String srcc= f.getAbsolutePath();//源目录

            String dess=des.getAbsolutePath()+srcc.substring(3);//目标目录
            System.out.println(dess);
            File newFile=new File(dess);//将目标目录路径生成
            if(!newFile.exists())//如果目标目录路径不存在进行创建。
            {
                newFile.mkdirs();
            }
        }
        //System.out.println(f.getAbsolutePath());
        copy(f,des);//如果是目录进行递归带调用copy
    }
}

}

  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值