繁体   English   中英

我们可以在Java中回滚文件mkdir吗?

[英]Can we rollback File mkdir in java?

我有一个用Java File mkdir创建一个以上目录(100个或更多)的方案,对此我不确定,如果出现任何问题,我们是否有任何逻辑回滚(删除)所有新创建的目录?

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

我已经在Google上进行了搜索,但没有找到任何合适的答案。

Java没有内置任何功能。 我建议您保留一个数据结构,该数据结构可以随时跟踪更改,如果需要回滚,则只需对其进行迭代。

伪代码:

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.
  }
}

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

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM