有 Java 编程相关的问题?

你可以在下面搜索框中键入要查询的问题!

我们可以用java回滚文件mkdir吗?

我有一个使用java文件mkdir创建多个目录(100个或更多)的场景,我不确定这一点,如果出现任何问题,我们有没有 是否有回滚(删除)所有新创建的目录的逻辑

for(User user: users){
  File file = new File("Directory");
  if(!file.exist()){
   file.mkdir();
   // if anything goes wrong
   rollback();
  }
}

我已经在谷歌上搜索过了,但确实找到了合适的答案


共 (2) 个答案

  1. # 1 楼答案

    并没有用于回滚mkdir操作的api,所以只需保留已成功创建的目录列表,并在出现问题时删除它们

  2. # 2 楼答案

    java中没有为此内置任何东西。我建议您保留一个数据结构,在运行过程中跟踪您的更改,如果需要回滚,只需对其进行迭代

    Psuedo代码:

    boolean rollback = false;
    List<File> changes = new ArrayList<File>();
    
    for(int i = 0; i < users.length() && !rollback; i++) {
      User user = users.get(i);
      File file = new File("Directory");
      if(!file.exist()){
        try {
          file.mkdir();
          changes.add(file);
        } catch (Throwable t) {
          rollback = true;
      }
    }
    
    if (rollback) {
      // report failure?
      try {
        for(File file : changes) {
          file.rmdir();
        }
      } catch (Throwable t) {
          //So something smart here.
      }
    }