【发布时间】:2016-04-15 18:09:53
【问题描述】:
我正在尝试为文件夹同步应用程序中的算法实现“取消”按钮。该算法递归地遍历用户指定的目录结构,将其文件和目录放入 TreeView 中,并根据它们相对于其他文件夹中的等效项是新的、已删除的、已更改的还是未更改的来标记它们。简化代码供参考:
fillInTreeView(File x, TreeItem root) {
if (x.isFile()) {
newBranch = makeBranch(x.getName(x.getNameCount() - 1).toString(), root);
assignMark(newBranch);
} else {
newBranch = makeBranch(x.getName(x.getNameCount() - 1).toString(), root);
assignMark(newBranch);
fillInTreeView(x, newBranch);
}
}
我对“取消”的含义感到不安。如果我让它从顶部删除树中的所有内容,该函数是否会继续添加新内容,从取消算法尚未到达的文件中调用自身,使整个按钮毫无意义?我想我宁愿先问,也不愿花几天时间尝试实施它,但后来不得不问,然后重新发现美国。
【问题讨论】:
-
算法没有用户界面,因此您无法添加“取消”按钮。但是,您可以在其中放置确认对话框。但是如果路径很深,你真的希望每个关卡都点击确定还是取消?
-
您能否明确说明您希望取消功能做什么?我想它会停止当前执行的递归,通过执行类似@dr_debug 的建议,但你谈论删除文件 - 你的意思是你希望它不仅终止进程,而且撤消它的更改制作?
标签: java recursion cancellation