为了账号安全,请及时绑定邮箱和手机立即绑定

如何使用java锁定文件(如果可能的话)

如何使用java锁定文件(如果可能的话)

GCT1015 2019-06-15 10:34:47
如何使用java锁定文件(如果可能的话)我有一个Java进程,它使用FileReader打开一个文件。如何防止另一个(Java)进程打开该文件,或者至少通知该第二个进程该文件已经打开?如果文件是打开的(这解决了我的问题),这会自动使第二个进程获得异常吗?还是必须在第一个进程中使用某种标志或参数显式地打开它?澄清:我有一个Java应用程序,它列出了一个文件夹,并打开清单中的每个文件来处理它。它逐个处理每个文件。每个文件的处理过程包括读取它并根据内容进行一些计算,大约需要2分钟。我还有另一个Java应用程序,它做同样的事情,但却在文件上写东西。我想要的是能够同时运行这些应用程序,所以情况是这样的。ReadApp列出文件夹并找到文件A、B、C。它打开文件A并开始读取。WriteApp列出文件夹并找到文件A、B、C。它打开文件A,查看打开的文件(通过异常或其他方式),然后转到B文件。ReadApp完成文件A并继续B。它看到文件是打开的,并且继续。读写应用程序在ReadApp读取同一文件时不写,反之亦然。它们是不同的过程。
查看完整描述

3 回答

?
蛊毒传说

TA贡献1895条经验 获得超3个赞

FileChannel.lock可能就是你想要的。

FileInputStream in = new FileInputStream(file);try {
    java.nio.channels.FileLock lock = in.getChannel().lock();
    try {
        Reader reader = new InputStreamReader(in, charset);
        ...
    } finally {
        lock.release();
    }} finally {
    in.close();}

(免责声明:代码没有编译,当然也没有测试。)

注意用于FileLock的API文档.


查看完整回答
反对 回复 2019-06-15
?
偶然的你

TA贡献1841条经验 获得超3个赞

如果你能用Java NIO (JDK 1.4或更高),那我想你是在找java.nio.channels.FileChannel.lock()

fileChannel.lock()


查看完整回答
反对 回复 2019-06-15
  • 3 回答
  • 0 关注
  • 851 浏览

添加回答

举报

0/150
提交
取消
微信客服

购课补贴
联系客服咨询优惠详情

帮助反馈 APP下载

慕课网APP
您的移动学习伙伴

公众号

扫描二维码
关注慕课网微信公众号