【发布时间】:2017-02-08 00:42:40
【问题描述】:
我的 Java Windows 应用程序将特定问题的数据保存在文件 aProblem.db 中,该文件位于同名目录(文件夹)中,例如 Documents\MyApplication\aProblem\aProblem.db。我希望用户能够在不离开应用程序的情况下删除问题。所以 aProblem.db 文件必须被删除,如果 aProblem 目录为空,它也应该被删除。因为 FileChooser 不允许删除文件(至少从我阅读文档来看),我用选择框、确定按钮和取消按钮构建了自己的对话框。通过在 MyApplication 中搜索包含文件 x.db 的所有目录 x 来填充选择框。
下面的代码是删除部分,用户做出选择并点击OK后。它可以工作,除非在 Windows 资源管理器中打开目录,尝试删除目录时抛出异常。我知道这是因为资源管理器锁定了它,但我想避免要求用户在资源管理器中关闭它并重试。这可能吗?
注意:我使用 JFileChooser.APPROVE_OPTION,但不要使用 JFileShooser。
int resp = dialog.showOpenDialog();
if(resp == JFileChooser.APPROVE_OPTION){
strConcoursFolderPath = dialog.getSelectedFolderFullPath();
int response = yesNoDialog("Do you really want to delete " + strConcoursFolderPath + "?");
if(response == JOptionPane.YES_OPTION) {
File dir = new File(strConcoursFolderPath);
boolean dirExist = dir.exists() && dir.isDirectory();
if(dirExist) {
String strDbFile = dialog.getSelectedFolderName() + ".db";
File db = new File(dir + "\\" + strDbFile);
if(db.exists()) db.delete();
File[] listOfFiles = dir.listFiles();
if(listOfFiles.length == 0) dir.delete();
}
}
} else {
//okDialog("Cancel button clicked");
}
【问题讨论】:
标签: java windows directory delete-file