示例#1
0
  /**
   * 复制整个目录的内容
   *
   * @param srcDirName 待复制目录的目录名
   * @param destDirName 目标目录名
   * @param overlay 如果目标目录存在,是否覆盖
   * @return 如果复制成功返回true,否则返回false
   */
  public static boolean copyDirectory(String srcDirName, String destDirName, boolean overlay) {
    // 判断源目录是否存在
    File srcDir = new File(srcDirName);
    if (!srcDir.exists()) {
      //			MESSAGE = "复制目录失败:源目录" + srcDirName + "不存在!";
      return false;
    } else if (!srcDir.isDirectory()) {
      //			MESSAGE = "复制目录失败:" + srcDirName + "不是目录!";
      return false;
    }

    // 如果目标目录名不是以文件分隔符结尾,则加上文件分隔符
    if (!destDirName.endsWith(File.separator)) {
      destDirName = destDirName + File.separator;
    }
    File destDir = new File(destDirName);
    // 如果目标文件夹存在
    if (destDir.exists()) {
      // 如果允许覆盖则删除已存在的目标目录
      if (overlay) {
        new File(destDirName).delete();
      } else {
        //				MESSAGE = "复制目录失败:目的目录" + destDirName + "已存在!";
        return false;
      }
    } else {
      // 创建目的目录
      System.out.println("目的目录不存在,准备创建。。。");
      if (!destDir.mkdirs()) {
        System.out.println("复制目录失败:创建目的目录失败!");
        return false;
      }
    }

    boolean flag = true;
    File[] files = srcDir.listFiles();
    for (int i = 0; i < files.length; i++) {
      // 复制文件
      if (files[i].isFile()) {
        flag =
            CopyFileUtil.copyFile(
                files[i].getAbsolutePath(), destDirName + files[i].getName(), overlay);
        if (!flag) break;
      } else if (files[i].isDirectory()) {
        flag =
            CopyFileUtil.copyDirectory(
                files[i].getAbsolutePath(), destDirName + files[i].getName(), overlay);
        if (!flag) break;
      }
    }
    if (!flag) {
      //			MESSAGE = "复制目录" + srcDirName + "至" + destDirName + "失败!";
      return false;
    } else {
      return true;
    }
  }
示例#2
0
 public static void main(String[] args) {
   String srcDirName = "C:/test/test0/test1";
   String destDirName = "c:/ttt";
   CopyFileUtil.copyDirectory(srcDirName, destDirName, true);
 }