java 文件字符流 (复制一个不为空的目录)

写一个方法实现复制一个不为空的目录:

首先都知道,目录下可能有目录和文件,目录之下有会如此,就得用递归,同时,复制文件的时候也得用到字符流进行赋值:

import java.io.File;
import java.io.FileInputStream;
import java.io.FileOutputStream;
import java.io.IOException;

public class CopyDirectory {
    public static void main(String[] args) throws IOException {
        File file1=new File("F:/a/新建文件夹");      
        File file2=new File("F:/a/新建文件夹2");//创建一个新目录
        if(!file2.exists()){
            file2.mkdirs();
        }
        copyDirectory(file1,file2);
    }
    public static void copyFile(File file1,File file2){//复制文件的方法
            try(
                FileInputStream fis = new FileInputStream(file1);
                FileOutputStream fos = new FileOutputStream(file2);//创建字符输入输出流
                ){
            byte [] data=new byte[12];
            int d=-1;
            while((d=fis.read(data))!=-1){
                fos.write(data,0,d);//将其复制到另一个文件里
            }
        }catch(IOException e){
            e.printStackTrace();
        }
    }
    public static void copyDirectory(File file1,File file2) throws IOException{//复制目录的方法
        if(!file1.exists()){
            System.out.println("该复制文件不存在");
        }
        else{
            File [] fs=file1.listFiles();
            for(File file:fs){
                File copy=new File(file2,file.getName());//创建同名的文件或目录
                System.out.println(copy);
                if(!file.isDirectory()){    
                    copy.createNewFile();
                    copyFile(file,copy);//是目录的话递归下去,继续创建目录下的文件或目录
                }
                else{
                    copy.mkdir();
                    copyDirectory(file,copy);//是文件的话,调用方法,复制文件
                }
            }
        }
    }
}

这里写图片描述

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值