【问题标题】:Java : How to block other program from accessing file if one program is using it? [duplicate]Java:如果一个程序正在使用它,如何阻止其他程序访问文件? [复制]
【发布时间】:2016-11-24 10:16:02
【问题描述】:

我有 2-3 个程序可以修改文件,但如果一个程序正在使用它,我想阻止其他程序。我不能在这使用同步。还有其他规定吗?

【问题讨论】:

  • 你的意思是不同的程序,还是同一个程序中的不同线程?
  • @Jaydee 的建议是我通常使用的。但是,文档说:“锁是否真的阻止另一个程序访问锁定区域的内容是系统相关的,因此未指定。”确保这对您来说不是问题。

标签: java


【解决方案1】:

文件锁定在不同的应用程序上,它不是在 Java 级别处理的。 您必须在操作系统级别处理它。不同的操作系统有不同的解决方案。

如果一个程序正在使用它,我想阻止其他人。

您可能想要一个写锁,不包括所有读者和作者。但允许你的一些程序。在 windows 上可能会出现这个link 兴趣。

它非常依赖于平台,但是是一个 Java 代码来尝试它:

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();
}

【讨论】:

猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2018-04-22
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2013-03-15
  • 1970-01-01
相关资源
最近更新 更多