[英]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.