Java学习笔记(15):复制文件

一:复制单级文件

package 复制文件;

import java.io.*;

public class 复制单级文件 {
    public static void main(String[] args) throws IOException{
        //这是要复制的文件
        File f = new File("D:\\c");
        //获取要复制的文件的名字
        String fName = f.getName();
        //目的目录在TEXT下,名字与要复制的文件的名字相同
        File f2 = new File("TEXT",fName);
        //如果目的目录不存在,则创建文件
        if(!f2.exists()){
            f2.mkdir();
        }
        //获取源目录里面的File集合并遍历
        File[] list = f.listFiles();
        for(File src:list){
            //保持名称相同
            String name = src.getName();
            File df = new File(f2,name);
            copyFile(df,src);
        }
    }
    
    private static void copyFile(File df, File src) throws IOException {
        //
        BufferedReader bf = new BufferedReader(new FileReader(src));
        BufferedWriter bw = new BufferedWriter(new FileWriter(df));
        //
        String line = null;
        while((line = bf.readLine())!=null){
            bw.write(line);
            bw.newLine();
        }
        //
        bf.close();
        bw.close();
    }
}

二:复制多级文件(递归)

package 复制文件;

import java.io.*;


public class 复制多级文件 {
    public static void main(String[] args) throws IOException {
        File f = new File("D:\\aa");
        File f2 = new File("D:\\a\\");
        copyFolder(f,f2);
    }

    private static void copyFolder(File f, File f2) throws IOException{
        if(f.isDirectory()){
            File f3 = new File(f2,f.getName());

            if(!f3.exists()){
                f3.mkdir();
            }

            File[] list = f.listFiles();

            for(File file:list){
                copyFolder(file,f3);
            }

        }else{
            File newf2 = new File(f2,f.getName());
            copyFile(f,newf2);
        }
    }

    private static void copyFile(File f, File f2) throws IOException{
        BufferedInputStream bis = new BufferedInputStream(new FileInputStream(f));
        BufferedOutputStream bos = new BufferedOutputStream(new FileOutputStream(f2));
        byte[] b = new byte[1024];
        int len;
        while((len = bis.read(b))!=-1){
            bos.write(b,0,len);
        }
        bis.close();bos.close();
    }
}

上一篇:最优加工顺序问题--贝尔曼规+回溯


下一篇:2021-02-01