尝试锁定文本文件(“test.txt”),然后从文本文件中读取一行并释放锁定。
我收到以下错误:
“错误:java.io.IOException:进程无法访问该文件,因为另一个进程已锁定文件的一部分”
请参阅下面的代码:
public static void main(String [] args)抛出异常{
File file = new File("test.txt");
FileInputStream in = new FileInputStream(file);
DataInputStream dis = new DataInputStream(in);
FileChannel channel = new RandomAccessFile("test.txt", "rw").getChannel();
try{
FileLock lock = channel.tryLock();
System.out.println("Data: " + dis.readLine());
lock.release();
}catch(Exception ex){
System.out.println("Err: "+ex);
}
in.close();
}
似乎进程在进入读操作之前锁定文件?
对不起我的无知,没有长时间使用Java,我一直试图在其他地方寻找解决方案。
提前致谢!
答案 0 :(得分:0)
试试这个:
RandomAccessFile raf = new RandomAccessFile("test.txt", "rw");
FileChannel channel = raf.getChannel();
// .. do locking here ...
// wrap DataInputStream around existing, locked connection
DataInputStream dis = new DataInputStream(new FileInputStream(raf.getFD()));
System.out.println("Data: " + dis.readLine());
// .. do unlocking here ...
答案 1 :(得分:0)
你还可以放置
lock.release();
try
{
} catch (Exception e)
{
if (lock != null )
lock.release();
}
因为在访问文件时抛出了IOException,所以不会释放文件锁。