【问题标题】:recursive delete directory in z3z3中的递归删除目录
【发布时间】:2015-08-12 10:13:14
【问题描述】:

我需要使用 java API 在z3 中定义一个函数,该函数将目录作为输入并递归删除其所有内容。由于z3不支持递归函数,有没有办法表达这样的函数?

【问题讨论】:

  • 您可以使用堆栈并模拟递归。

标签: java recursion z3


【解决方案1】:

当您想将递归转换为迭代时,您需要跟踪堆栈中方法的状态。在这种特殊情况下,状态是一个文件。所以,方法是这样的:

private void walkTreeUsingSimulation(Stack<File> stack) {
    while (!stack.isEmpty()) {
        File f = stack.pop();
        System.out.println(f.getAbsolutePath());
        if(f.isDirectory()) {
            File[] files = f.listFiles();
            for (File file : files) {
                stack.push(file);
            }
        }
    }
}

您通过推送初始文件夹来创建堆栈。在这种情况下,我只是打印文件的路径。但是,为了能够删除文件,您需要先遍历叶节点。最简单的可能是将整个收集到一个列表中并使用该列表来删除文件。

【讨论】:

    猜你喜欢
    • 2014-05-12
    • 2016-04-18
    • 2018-10-15
    • 2010-10-21
    • 2011-12-31
    相关资源
    最近更新 更多