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 ConstXiong
     * @date 2019-11-13 13:38:19
     */
    public class TestCopyDir {
    
        public static void main(String[] args) {
            String srcPath = "E:/a";
            String destPath = "E:/a_";
            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();
                    }
                }
            }
        }
        
    }

      

    来一道刷了进BAT的面试题?

  • 相关阅读:
    zookeeper、hbase集成kerberos
    hdfs、yarn集成kerberos
    kerberos(一) 详解
    Kerberos(一) 安装
    kerberos 配置错误记录
    javascript自定义滚动条插件,几行代码的事儿
    javascript,css延迟加载器
    DOM: 如何获取元素下的第一个子元素
    自定义标签的可用性
    (转)也谈基于NodeJS的全栈式开发(基于NodeJS的前后端分离)
  • 原文地址:https://www.cnblogs.com/ConstXiong/p/11933263.html
Copyright © 2011-2022 走看看