【问题标题】:How to find out which process is using a file in Java?如何找出哪个进程正在使用Java中的文件?
【发布时间】:2013-03-08 18:50:21
【问题描述】:

我试图在 Java 中将文件从一个目录移动到另一个目录,但我收到以下错误消息“该进程无法访问该文件,因为它正被另一个进程使用。”

如何在 Java 中找出哪个进程正在使用该文件?

我在 Win 7 上。

【问题讨论】:

  • 没有平台中立的、Java 特定的方式来做到这一点(afaik)。
  • 您是否特别需要从 Java 中执行此操作,或者命令行方法是否合适?如果有,是哪个平台?

标签: java file process move


【解决方案1】:

如果命令行方法可行,并且您使用的是类似 Linux 的系统,那么 lsof 是您的朋友。 lsof 大约有 10 个 gazillion 标志,但根据您的需要,它应该很简单:

lsof myfile

您应该得到类似于以下的输出:

COMMAND    PID    USER  FD   TYPE DEVICE  SIZE    NODE NAME
someprog   4660 foobar mem    REG  253,0 58400 4522314 myfile

编辑

您说您使用的是 Windows。我不熟悉 Windows 命令行工具。但是,这里有一个问题可能会有所帮助:How can I determine whether a specific file is open in Windows?

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2014-09-09
    • 1970-01-01
    • 2012-04-16
    • 2013-06-04
    • 2010-10-01
    • 2015-08-01
    • 2012-06-21
    • 2010-10-29
    相关资源
    最近更新 更多