Java实现文件夹拷贝!

Java实现文件夹拷贝!

刚开始学习io流,学习了文件拷贝,发现文件夹拷贝对于我来说压力还是很大的,希望前辈们多提点建议,让我变得更加优秀把!!!

package dylan.linger.ioo.first;


import java.io.*;
/**
 * @author linger
 * 实现文件夹拷贝
 */
public class CopyDir {
    public static void main(String[] args) throws Exception {
        //源文件夹路径
        String src = "F:/idea/learn/io";
        //目的文件夹路径
        String dest = "G:/idea/learn/io";
        copyDir(src,dest);
    }
    //拷贝文件夹
    public static void copyDir(String srcPath,String destPath) throws Exception {
        File src = new File(srcPath);
        File dest = new File(destPath);
        if (!src.exists()){ //文件夹路径不存在抛出异常
            throw new Exception("源目录不存在:"+srcPath);
        }
        dest.mkdirs();//不管有没有,直接创建它

        File[] srcSons = src.listFiles();//源文件夹内的所有内容
        for (File file:srcSons){
            if (null==file||!src.exists()) {//没有文件,跳出循环
                return;
            }
            File destSons = new File(dest.getAbsolutePath()+File.separator+file.getName()); //创建目的文件夹内所有内容的路径
            //调用方法拷贝文件
            if (file.isFile()){
                copyFile(file,destSons);
            }else if(file.isDirectory()){   //拷贝文件夹
                destSons.mkdirs();
                String srcSonPath = file.getAbsolutePath();
                String destSonPath = destSons.getAbsolutePath();
                copyDir(srcSonPath,destSonPath);
            }
            System.out.println(file.getName()+"已创建。");
        }
    }
    //拷贝文件
    public static void copyFile(File src,File dest) throws IOException {
        InputStream is = new FileInputStream(src);//文件输入流
        OutputStream os = new FileOutputStream(dest);//文件输出流

        byte[] flash = new byte[1024];  //缓冲容器

        int len = -1;// 接收长度
        while((len=is.read(flash))!=-1){
            os.write(flash,0,len);
        }
        os.flush();//刷新缓存
        //关闭流
        os.close();
        is.close();
    }
}

	做一个决定,并不难,
			难的是付诸行动,并且坚持到底。			——————	by linger
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值