Windows:删除目录

时间:2012-08-29 17:10:43

标签: java windows

org.eclipse.core.runtime.CoreException: Could not move: C:\gram\zmedia.
    at org.eclipse.core.internal.filesystem.Policy.error(Policy.java:55)
    at org.eclipse.core.filesystem.provider.FileStore.move(FileStore.java:415)
    at org.eclipse.core.internal.filesystem.local.LocalFile.move(LocalFile.java:352)
    at com.zmedia.zide.config.model.Service.updateDeploymentSetup(Service.java:923)
    at com.zmedia.zide.config.model.Service.update(Service.java:886)
    at com.zmedia.zide.util.ServiceAPI.create(ServiceAPI.java:239)
    at com.zmedia.zide.ui.wizards.pages.CreateServicePage$5.run(CreateServicePage.java:525)
    at org.eclipse.jface.operation.ModalContext$ModalContextThread.run(ModalContext.java:121)
Caused by: org.eclipse.core.runtime.CoreException: Problems encountered while deleting files.
    at org.eclipse.core.internal.filesystem.local.LocalFile.delete(LocalFile.java:125)
    at org.eclipse.core.filesystem.provider.FileStore.move(FileStore.java:411)
    ... 6 more

大家好,

我们在日食之上开发了一个插件。我们为用户提供了一个在eclipse中删除旧项目的选项。

问题: 如果在此目录上打开了文件,或者在删除操作中使用其目录的任何进程都将成为问题。此问题仅适用于Windows用户。

有没有办法强制删除Windows上的目录?

如何向用户通知“此过程正在使用我们的目录。请关闭此过程并继续”。

有没有办法知道哪个进程正在访问它?

5 个答案:

答案 0 :(得分:3)

您可以使用Unlocker,它具有可移植版本和命令行选项(取决于其许可证),您可以将其与您的插件一起发送,并通过命令行使用它来解锁使用过的文件。< / p>

答案 1 :(得分:0)

  

有没有办法强制删除Windows上的目录?

您可以终止持有锁定的进程或要求用户关闭进程。不幸的是,这可能是日食过程本身或探险家。

答案 2 :(得分:0)

在调试情况下,要知道哪个进程正在使用文件,您可以使用优秀的Process Explorer as decribed here

AFAIK,Java SDK没有简单的方法可以知道哪个进程正在使用它。

你可以做的是将文件标记为deleteOnExit(),当用户实际退出Eclipse时它将被删除。

答案 3 :(得分:0)

可能是你自己的插件锁定文件。在尝试删除之前,尝试实现一个方法/策略来“释放”它们。您可以使用Apache Commons IO来帮助您构建/识别它。看看FileDeleteStrategy。同时选中“FORCE”选项。

答案 4 :(得分:0)

我怀疑只有Java才有好方法找出阻止你删除文件夹的进程。这也可能有点激进。如果您无法移动并显示一个列出无法移动(或删除)的项目的对话框,为什么不复制,以便用户可以自己处理。毕竟文件保持打开可能是有原因的。