Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/383.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
我们可以用java回滚文件mkdir吗?_Java - Fatal编程技术网

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

我们可以用java回滚文件mkdir吗?,java,Java,我有一个使用java文件mkdir创建多个目录(100个或更多)的场景,我不确定这一点,如果出现任何问题,我们有没有 是否有回滚(删除)所有新创建的目录的逻辑 for(User user: users){ File file = new File("Directory"); if(!file.exist()){ file.mkdir(); // if anything goes wrong rollback(); } } 我已经在谷歌上搜索过了,但确实找到了合适的

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

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

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

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.
  }
}
boolean rollback=false;
列表更改=新建ArrayList();
对于(int i=0;i
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.
  }
}
boolean rollback=false;
列表更改=新建ArrayList();
对于(int i=0;i
没有用于回滚mkdir操作的api,因此只需保留已成功创建的目录列表,并在出现问题时将其删除

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

只要将你创建的目录保存在一个列表中,如果出现任何问题,请删除所有目录。@answering guys:提供一些代码或更深入的事务解释-只是说“不,没有类似的事情”不值得回答,看起来就像声誉搜索。只要将您创建的目录保存在一个列表中,如果出现任何问题,请删除所有目录。@answering guys:提供一些代码或更深入的交易解释-只说“不,没有这样的事”不值得回答,看起来就像声誉搜索。