zoukankan      html  css  js  c++  java
  • Java实现文件夹复制

    使用递归复制文件夹和文件 

    package constxiong.interview;
    
    import java.io.BufferedInputStream;
    import java.io.BufferedOutputStream;
    import java.io.File;
    import java.io.FileInputStream;
    import java.io.FileOutputStream;
    import java.io.IOException;
    
    
    /**
     * 复制文件夹
     * @author Liangjw
     * @date 2020-4-6 15:00:51
     */
    public class TestCopyDir {
    
        public static void main(String[] args) {
            String srcPath = "E:/a";
            String destPath = "E:/b";
            copyDir(srcPath, destPath);
        }
        
        /**
         * 复制文件夹
         * @param srcFile
         * @param destFile
         */
        public static void copyDir(String srcDirPath, String destDirPath) {
            File srcDir = new File(srcDirPath);
            if (!srcDir.exists() || !srcDir.isDirectory()) {
                throw new IllegalArgumentException("参数错误");
            }
            File destDir = new File(destDirPath);
            if (!destDir.exists()) {
                destDir.mkdirs();
            }
            File[] files = srcDir.listFiles();
            for (File f : files) {
                if (f.isFile()) {
                    copyFile(f, new File(destDirPath, f.getName()));
                } else if (f.isDirectory()) {
                    copyDir(srcDirPath + File.separator + f.getName(),
                            destDirPath + File.separator + f.getName());
                }
            }
        }
        
        /**
         * 复制文件
         * @param srcFile
         * @param destFile
         */
        public static void copyFile(File srcFile, File destFile) {
            BufferedInputStream bis = null;
            BufferedOutputStream bos = null;
            byte[] b = new byte[1024];
            
            try {
                bis = new BufferedInputStream(new FileInputStream(srcFile));
                bos = new BufferedOutputStream(new FileOutputStream(destFile));
                int len;
                while ((len = bis.read(b)) > -1) {
                    bos.write(b, 0, len);
                }
                bos.flush();
            } catch (IOException e) {
                e.printStackTrace();
            } finally {
                if (bis != null) {
                    try {
                        bis.close();
                    } catch (IOException e) {
                        e.printStackTrace();
                    }
                }
                if (bos != null) {
                    try {
                        bos.close();
                    } catch (IOException e) {
                        e.printStackTrace();
                    }
                }
            }
        }
        
    }
  • 相关阅读:
    由保存当前用户引发的springboot的测试方式postman/restlet还是swagger2
    VS集成opencv编译C++项目遇到的问题
    利用StringUtils可以避免空指针问题
    springboot集成Guava缓存
    Oracle 课程四之索引
    Oracle 课程三之表设计
    Oracle 课程二之Oracle数据库逻辑结构
    Oracle 课程一之Oracle体系结构
    Oracle权限一览表
    Informatica元数据库解析
  • 原文地址:https://www.cnblogs.com/4AMLJW/p/InputStreamOutputStream20200406150209.html
Copyright © 2011-2022 走看看