如何确定文件是否正在使用?
答案 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)
This question是关于C#但我认为它主要适用于Java
答案 2 :(得分:0)
我认为Java不能告诉您其他进程是否正在使用文件。根据您尝试执行的操作,当您尝试操作它时,可能会获得IOException
。否则,如果您不是Linux,您可能需要查看lsof。
答案 3 :(得分:0)
我认为您所询问的是您尝试使用的文件是否已被锁定。您可以使用FileLock
类来尝试锁定您感兴趣的文件。此类旨在映射到正在使用的文件系统上的本机文件锁定工具。如果您可以锁定文件,则可以安全地假设没有其他进程对文件进行锁定。
答案 4 :(得分:0)
以下是Windows用户的简易解决方案: http://www.dr-hoiby.com/WhoLockMe/
小工具但很有用......