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

时间:2021-10-29 01:01:14

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

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

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);//是文件的话,调用方法,复制文件
                }
            }
        }
    }
}

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