[Java] java复制整个目录(如果目标目录存在,是否覆盖) →→→→→进入此内容的聊天室

来自 , 2020-10-23, 写在 Java, 查看 102 次.
URL http://www.code666.cn/view/f29c21d4
  1.         /**
  2.          * 复制整个目录的内容
  3.          *
  4.          * @param srcDirName
  5.          *            待复制的目录名
  6.          * @param destDirName
  7.          *            目标目录名
  8.          * @param overlay
  9.          *            如果目标目录存在,是否覆盖
  10.          * @return 如果复制成功返回true,否则返回false
  11.          */
  12.         public static boolean copyDirectory(String srcDirName, String destDirName,
  13.                         boolean overlay) {
  14.                 // 判断原目录是否存在
  15.                 File srcDir = new File(srcDirName);
  16.                 if (!srcDir.exists()) {
  17.                         System.out.println("复制目录失败:原目录" + srcDirName + "不存在!");
  18.                         return false;
  19.                 } else if (!srcDir.isDirectory()) {
  20.                         System.out.println("复制目录失败:" + srcDirName + "不是一个目录!");
  21.                         return false;
  22.                 }
  23.                 // 如果目标文件夹名不以文件分隔符结尾,自动添加文件分隔符
  24.                 if (!destDirName.endsWith(File.separator)) {
  25.                         destDirName = destDirName + File.separator;
  26.                 }
  27.                 File destDir = new File(destDirName);
  28.                 // 如果目标文件夹存在,
  29.                 if (destDir.exists()) {
  30.                         if (overlay) {
  31.                                 // 允许覆盖则删除已存在的目标目录
  32.                                 System.out.println("目标目录已存在,准备删除它!");
  33.                                 if (!DeleteFileUtil.delete(destDirName)) {
  34.                                         System.out.println("复制目录失败:删除目标目录" + destDirName + "失败!");
  35.                                 }
  36.                         } else {
  37.                                 System.out.println("复制目录失败:目标目录" + destDirName + "已存在!");
  38.                                 return false;
  39.                         }
  40.                 } else {
  41.                         // 创建目标目录
  42.                         System.out.println("目标目录不存在,准备创建它!");
  43.                         if (!destDir.mkdirs()) {
  44.                                 System.out.println("复制目录失败:创建目标目录失败!");
  45.                                 return false;
  46.                         }
  47.                 }
  48.                 boolean flag = true;
  49.                 // 列出源文件夹下所有文件(包括子目录)的文件名
  50.                 File[] files = srcDir.listFiles();
  51.                 for (int i = 0; i < files.length; i++) {
  52.                         // 如果是一个单个文件,则进行复制
  53.                         if (files[i].isFile()) {
  54.                                 flag = CopyFileUtil.copyFile(files[i].getAbsolutePath(),
  55.                                                 destDirName + files[i].getName());
  56.                                 if (!flag) {
  57.                                         break;
  58.                                 }
  59.                         }
  60.                         // 如果是子目录,继续复制目录
  61.                         if (files[i].isDirectory()) {
  62.                                 flag = CopyFileUtil.copyDirectory(files[i].getAbsolutePath(),
  63.                                                 destDirName + files[i].getName());
  64.                                 if (!flag) {
  65.                                         break;
  66.                                 }
  67.                         }
  68.                 }
  69.                 if (!flag) {
  70.                         System.out.println("复制目录" + srcDirName + "至" + destDirName + "失败!");
  71.                         return false;
  72.                 }
  73.                 System.out.println("复制目录" + srcDirName + "至" + destDirName + "成功!");
  74.                 return true;
  75.  
  76.         }

回复 "java复制整个目录(如果目标目录存在,是否覆盖)"

这儿你可以回复上面这条便签

captcha