我有两个 java 进程 (JAR),一个每 1 分钟写入一个文本文件,另一个正在读取该文件并调用 Web 服务将数据存储在数据库中。
有什么办法可以在文件处于写入模式时锁定文件吗?我观察到,当wvdial
我认为正在拨打调制解调器,它会在 /var/lock/ttyUSB0..LOCK 中创建一个锁定文件。如果文件处于写入模式,我想要这种过程,另一个进程可以等到写入完成。写完后进程就可以读取文件内容了。
请指导我解决我的问题。
谢谢
也许这堂课可以帮助你http://docs.oracle.com/javase/7/docs/api/java/nio/channels/FileLock.html
编辑:这篇文章可能已经涵盖了这个主题如何使用java锁定文件(如果可能)
Exemple:
FileInputStream in = new FileInputStream(file);
try
{
java.nio.channels.FileLock lock = in.getChannel().lock();
try
{
//write
}
finally
{
lock.release();
}
}
finally
{
in.close();
}
现在在阅读过程中:
FileInputStream in = new FileInputStream(file);
try
{
FileLock lock = in.getChannel().tryLock();
if (lock == null)
{
//file is locked, wait or do something else
}
else
{
try
{
//read
}
finally
{
lock.release();
}
}
}
finally
{
in.close();
}
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)