[Java]如何判断文件是否正在使用?

时间:2009-05-20 05:36:56

标签: java

如何确定文件是否正在使用?

5 个答案:

答案 0 :(得分:9)

在java中,您可以锁定文件并检查shared access

  

您可以使用文件锁来限制   从多个文件访问   过程

public class Locking {
   public static void main(String arsg[])
       throws IOException {
     RandomAccessFile raf =
       new RandomAccessFile("junk.dat", "rw");
     FileChannel channel = raf.getChannel();
     FileLock lock = channel.lock();
     try {
       System.out.println("Got lock!!!");
       System.out.println("Press ENTER to continue");
       System.in.read(new byte[10]);
     } finally {
       lock.release();
     }
   }
}

您还可以通过调用

来检查锁是否存在
// Try acquiring the lock without blocking. This method returns
// null or throws an exception if the file is already locked.
        try {
            lock = channel.tryLock();
        } catch (OverlappingFileLockException e) {
            // File is already locked in this thread or virtual machine
        }

答案 1 :(得分:0)

以下是Windows用户的简易解决方案: http://www.dr-hoiby.com/WhoLockMe/

小工具但很有用......

答案 2 :(得分:0)

This question是关于C#但我认为它主要适用于Java

答案 3 :(得分:0)

我认为Java不能告诉您其他进程是否正在使用文件。根据您尝试执行的操作,当您尝试操作它时,可能会获得IOException。否则,如果您不是Linux,您可能需要查看lsof

答案 4 :(得分:0)

我认为您所询问的是您尝试使用的文件是否已被锁定。您可以使用FileLock类来尝试锁定您感兴趣的文件。此类旨在映射到正在使用的文件系统上的本机文件锁定工具。如果您可以锁定文件,则可以安全地假设没有其他进程对文件进行锁定。