我有两个进程正在使用文件的情况。所以,如果文件已被锁定,我会检查我的进程,然后等到解锁。
一旦它被另一个进程解锁,我就把锁放开然后开始读取并写入文件。但我得到的错误如下。我知道它是一个错误,因为它被我锁定了,但是我想首先锁定文件然后开始读写,这样其他进程就无法使用它直到使用它。
Exchange
这是我的代码段
Exception in thread "main" java.io.IOException: The process cannot access the file because another process has locked a portion of the file
任何人都可以告诉我,我怎么能解决这个问题以及在这里做错了什么?
答案 0 :(得分:0)
这是你自己的FileLock导致了这个问题。您应该从FileLock中读取文件。
你应该这样读:
ByteBuffer buffer = ByteBuffer.allocate(20);
int noOfBytesRead = channel.read(buffer);
您可以找到更多信息here
如果你想要readline,你可以这样做:
FileInputStream fin = new FileInputStream(file);
if (FileEdit) {
RandomAccessFile accessFile = new RandomAccessFile(file, "rw");
FileChannel channel = accessFile.getChannel();
FileLock lock = null;
try {
lock = channel.lock();
System.out.println("Lock Status: " + lock.isValid());
InputStream is = Channels.newInputStream(channel);
BufferedReader read = new BufferedReader(new InputStreamReader(is, "UTF-8"));
System.out.println(read.readLine());
} catch (OverlappingFileLockException e) {
System.out.println("File Lock Error: " + e.getMessage());
}
lock.close();
}
提到here