IO例题:复制目录

IO例题:复制目录

以下代码使用IO把硬盘上的一个目录文件复制到硬盘上另一个地方:

package com.javalearn.io.copyall;

import java.io.*;

public class TestForCopy {
    public static void main(String[] args) {
        File srcFile = new File("D:\\typora笔记\\java\\io流\\临时文件夹");  //想要复制临时文件夹里面的全部内容
        File desFile = new File("D:\\typora笔记\\java\\io流\\放这里面");   //想把复制的临时文件夹放入“放这里面”
        copyDir(srcFile,desFile);  //递归
    }
    private static void copyDir(File src,File des) {
        if(src.isFile()) {  // 复制文件
            FileInputStream in = null;
            FileOutputStream out = null;
            try {
                in = new FileInputStream(src);  // 被复制的文件
                String path = (des.getAbsolutePath().endsWith("\\")?des.getAbsolutePath():(des.getAbsolutePath()+"\\")) + src.getAbsolutePath().substring(21);  // “临时文件夹”从原文件绝对路径的第21字符开始,path = 目标路径+临时文件夹中的路径+文件名  
                out = new FileOutputStream(path);  //无此文件则新建
                byte[] bytes = new byte[1024 * 1024];  // 1MB
                int count = 0;
                while ((count = in.read(bytes))!=-1) {
                    out.write(bytes,0,count);
                }
                out.flush();  // 不要忘了刷新
            } catch (FileNotFoundException e) {
                e.printStackTrace();
            } catch (IOException e) {
                e.printStackTrace();
            } finally {
                if (in != null) {
                    try {
                        in.close();
                    } catch (IOException e) {
                        e.printStackTrace();
                    }
                }
                if (out != null) {
                    try {
                        out.close();
                    } catch (IOException e) {
                        e.printStackTrace();
                    }
                }
            }
        }

        if (src.listFiles() != null) {
            File[] files = src.listFiles();
            for(File f :files) {
                if (f.isDirectory()) {  // 复制目录
                    String srcDir = f.getAbsolutePath();
                    String desDir = des.getAbsolutePath().endsWith("\\") ? des.getAbsolutePath():des.getAbsolutePath()+"\\"+srcDir.substring(21);  // 目标路径 + 临时文件夹中的路径
                    File newFile = new File(desDir);
                    if(!newFile.exists()) {
                        newFile.mkdirs();
                    }
                }
                copyDir(f,des);
            }
        }

    }
}

posted on 2021-12-05 15:39  菜小疯  阅读(49)  评论(0编辑  收藏  举报