z3中的递归删除目录

时间:2015-08-12 10:13:15

标签: java recursion z3

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

1 个答案:

答案 0 :(得分:0)

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

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);
            }
        }
    }
}

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