获取文件的锁

2024-05-23

我想在对特定文件开始 threo read 时获取文件上的锁定,以便其他应用程序无法读取已锁定的文件并希望在线程终止时释放锁定文件。


您可以获得一个FileLock https://docs.oracle.com/javase/8/docs/api/java/nio/channels/FileLock.html via a 文件通道 https://docs.oracle.com/javase/8/docs/api/java/nio/channels/FileChannel.html。要获取 FileChannel:

在此版本中,可以从现有的文件通道中获取文件通道文件输入流 https://docs.oracle.com/javase/8/docs/api/java/io/FileInputStream.html#getChannel--, 文件输出流 https://docs.oracle.com/javase/8/docs/api/java/io/FileOutputStream.html#getChannel--, or 随机存取文件 https://docs.oracle.com/javase/8/docs/api/java/io/RandomAccessFile.html#getChannel--通过调用该对象的 getChannel 方法来获取该对象,该方法返回连接到同一基础文件的文件通道。

但是,Java 无法控制操作系统提供的文件锁定类型,因此 API 的建议是像使用建议文件锁一样使用该锁。

锁是否实际上阻止另一个程序访问锁定区域的内容取决于系统,因此未指定。某些系统的本机文件锁定功能仅仅是建议性的,这意味着程序必须协同遵守已知的锁定协议才能保证数据完整性。在其他系统上,本机文件锁是强制性的,这意味着如果一个程序锁定文件的某个区域,那么实际上会阻止其他程序以违反锁定的方式访问该区域。在其他系统上,本机文件锁是建议性的还是强制的,都可以根据每个文件进行配置。为了确保跨平台行为一致且正确,强烈建议将此 API 提供的锁用作咨询锁。

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

获取文件的锁 的相关文章

随机推荐