Java:如果一个程序正在使用该文件,如何阻止其他程序访问该文件?

Java:如果一个程序正在使用该文件,如何阻止其他程序访问该文件?,java,Java,我有2-3个程序可以修改文件,但我想阻止其他程序,如果一个程序正在使用它。我不能在这里使用同步。还有其他规定吗?不同应用程序上的文件锁定不在Java级别处理。 您必须在操作系统级别处理它。不同的操作系统有不同的解决方案 如果一个程序正在使用它,我想阻止其他程序 可能您希望有一个写锁,不包括所有读卡器和写卡器。但是允许你的一些程序。在windows上,可能会出现这种兴趣 它非常依赖于平台,但它是一个Java代码: FileInputStream in = new FileInputStream(f

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

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

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

可能您希望有一个写锁,不包括所有读卡器和写卡器。但是允许你的一些程序。在windows上,可能会出现这种兴趣

它非常依赖于平台,但它是一个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();
}

你是说不同的程序,还是同一个程序中的不同线程?这对你有用吗@杰迪的建议是我通常会使用的。但是,文档中说:“锁是否确实阻止另一个程序访问锁定区域的内容取决于系统,因此未指定。”请确保这不是您的问题。实际上,它有Java API: