java – 尝试锁定文件通道时出现OverlappingFileLockException
内容导读
互联网集市收集整理的这篇技术教程文章主要介绍了java – 尝试锁定文件通道时出现OverlappingFileLockException,小编现在分享给大家,供广大互联网技能从业者学习和参考。文章包含1784字,纯文字阅读大概需要3分钟。
内容图文
![java – 尝试锁定文件通道时出现OverlappingFileLockException](/upload/InfoBanner/zyjiaocheng/802/458ec6d76e814eadb3de157e46e3e719.jpg)
物业:
>每次我尝试锁定文件时都会出现OverlappingFileLockException(这适用于所有文件)
>我有一台刚刚启动的机器
>通过Eclipse,java v1.6在Windows / Linux上进行测试
>只有一个Eclipse实例正在使用这个程序运行
>只有一个线程在此程序中运行(事件调度线程)
>我试图锁定以前从未接触过的文件
>同时使用lock()和trylock()的问题
>从FileOutputStream()更改为RandomAccessFile()会产生相同的结果
我试图在静态函数中锁定一个文件,该函数返回一个包含通道和锁的组合对象,因此另一个函数unlockFile(FileLocking fl)可用于关闭然后通道并释放锁.组合对象类如下所示:
`
public class FileLocking {
public FileChannel channel;
public FileLock lock;
public FileLocking(FileChannel f, FileLock l) {
channel = f;
lock = l;
}
锁定文件的函数如下所示:
public static synchronized FileLocking lockFile(String fileName) {
FileLocking result = null;
FileChannel channel = null;
try {
channel = new FileOutputStream(fileName).getChannel();
FileLock lock = channel.lock();
lock = channel.tryLock();
result = new FileLocking(channel, lock);
} catch (Exception e) {
Log(ERR, "Exception when locking " + e.getMessage());
e.printStackTrace();
} finally {
try {
channel.close();
} catch (IOException e) {
Log(ERR, "IOE: " + e.getMessage());
e.printStackTrace();
}
}
return result;
}
目前,我收到以下错误:
[ERR]: (pid:13) Exception when locking null
java.nio.channels.OverlappingFileLockException
at sun.nio.ch.FileChannelImpl$SharedFileLockTable.checkList(Unknown Source)
at sun.nio.ch.FileChannelImpl$SharedFileLockTable.add(Unknown Source)
at sun.nio.ch.FileChannelImpl.tryLock(Unknown Source)
at java.nio.channels.FileChannel.tryLock(Unknown Source)
at com.xxx.utils.FileLocking.lockFile(FileLocking.java:29)`
解释和/或编码技术受到高度赞赏.
解决方法:
为什么再次锁定后调用tryLock?我错过了什么吗?
当第二次调用tryLock时,由于JVM已经保持锁定,因此会出现OverlappingFileLockException.
内容总结
以上是互联网集市为您收集整理的java – 尝试锁定文件通道时出现OverlappingFileLockException全部内容,希望文章能够帮你解决java – 尝试锁定文件通道时出现OverlappingFileLockException所遇到的程序开发问题。 如果觉得互联网集市技术教程内容还不错,欢迎将互联网集市网站推荐给程序员好友。
内容备注
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 gblab@vip.qq.com 举报,一经查实,本站将立刻删除。
内容手机端
扫描二维码推送至手机访问。