我们可以用java回滚文件mkdir吗?
我有一个使用java文件mkdir创建多个目录(100个或更多)的场景,我不确定这一点,如果出现任何问题,我们有没有 是否有回滚(删除)所有新创建的目录的逻辑我们可以用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(); } } 我已经在谷歌上搜索过了,但确实找到了合适的
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:提供一些代码或更深入的交易解释-只说“不,没有这样的事”不值得回答,看起来就像声誉搜索。