我制作了一个代码来删除用户个人资料中的adobe目录,我用它远程连接远程计算机。在此代码中,当一个文件被删除时,textArea必须显示已删除文件的rute。在System.out.println中,它运行的rute但在递归函数结束之前它不会更改textArea。
我有这个代码。 (抱歉,基本翻译成英文)
private void RecursiveDel(String rute) {
File tdel = new File(rute);
if (tdel.isDirectory()) {
for (File del : tdel.listFiles()) {
RecursiveDel(del.getAbsolutePath());
}
}
txtInform += "Removing: " + ruta + "\r\n";
ActRes();
tdel.delete();
System.out.println(rute);
if (tdel.exists()) {
txtInforme += "File isn't deleted: \r\n" + ruta + "\r\n";
ActRes();
Correct = false;
}
}
private void ActRes(){
Thread act = new Thread(new Runnable() {
@Override
public void run() {
txtResult.setText(txtInforme);
}
});
act.start();
}
我如何才能将已删除的文件显示到TextArea中意味着递归函数是否有效?
答案 0 :(得分:2)
它会运行,但在递归函数结束之前它不会更改textArea。
更正,因为您的代码循环遍历所有目录并构建字符串,而不是尝试更新每个目录的文本区域。
相反,您应该在找到它时使用SwingWorker
并“发布”目录。然后,每次发布值时,都可以更新文本区域。
阅读Tasks That Have Interim Results上Swing教程中的部分,了解此方法的示例。