Java 文件共享/字节范围锁定

问题描述 投票:0回答:0

我需要能够让多个进程访问一个文件,这样最多只有一个作者,但可能有多个读者同时打开文件(在文件打开时强制执行)。如果作者决定更新某个字节范围,则在作者完成更新之前,读者不得访问该字节范围。

我可以在 C# 中使用 FileAccess.ReadWrite/FileShare.Read 在打开文件进行写入时使用 FileAccess.Read/FileShare.ReadWrite 在打开文件进行读取时使用 FileAccess.Read/FileShare.ReadWrite 表达文件级共享。这也不允许任何其他作家。

然后可以使用 FileStream.Lock 临时锁定字节范围以进行读取/更新(或者,不幸的是,共享锁在基本 C# API 中不可用,调用 Window 的系统 API 函数 LockFileEx)。

有没有一种方法可以在 Java(针对 linux)中表达这种行为,而无需引入单独的锁文件来管理文件级共享? IE。在 Java 中打开文件时如何指定共享,然后对字节范围执行单独的锁定?

我确实检查了 RandomAccessFile 和 FileChannel 的各种 API 文档。虽然我确实找到了有关字节范围锁定的内容,但似乎没有任何关于文件共享和访问同一文件的其他进程的访问限制的内容。

java file-locking
© www.soinside.com 2019 - 2024. All rights reserved.