gpt4 book ai didi

java - 使用 Java FileLock 有多安全?

转载 作者:行者123 更新时间:2023-12-02 09:19:07 24 4
gpt4 key购买 nike

使用 java.nio.channels.FileLock 的安全性如何用于在进程之间锁定文件?据说如果我们有排它锁,其他进程就无法访问该文件。然而,下面另一个答案SO question声明其他进程也必须检查文件锁才能确保我们的进程安全。

(a) Are you aware that locking the file won't keep other processes from touching it unless they also use locks?

所以我测试了我的代码并尝试更改一个我已经锁定的文件,Windows 文本编辑器并且我没有受到伤害,但当我使用 Notepad++..

在 Java 6 中是否有适当锁定文件的解决方案?

最佳答案

Java FileLock 在许多平台上使用咨询(而非强制)锁。这意味着它可能仅针对也使用FileLock(或其他语言中的等效项)的其他应用程序提供锁定。

Linux 或 Windows 都没有全面实现强制锁定。例如:

  • 对于 Linux 及类似系统,文件锁定只是建议性的。

  • 对于 Windows,根据 Wikipedia :

    "For applications that use the file read/write APIs in Windows, byte-range locks are enforced .... by the file systems that execute within Windows. For applications that use the file mapping APIs in Windows, byte-range locks are not enforced ..."

    换句话说,Windows 上的锁定可以是强制的,也可以是建议性的,具体取决于 Windows 应用程序使用哪个 API 来访问文件。

<小时/>

How safe is it to use Java FileLock?

如果您实际上询问是否可以安全地假设 FileLock 为所有其他应用程序(Java 和非 Java)提供强制文件锁定,无论它们是如何编写的,答案是不。做出这样的假设是不安全的。

<小时/>

Is there a solution for locking a file appropriately in Java 6?

仅当所有应用程序(Java 和其他)合作时;例如通过使用 FileLock 或等效方法。

如果您不能做出这样的假设,则没有使用可移植 Java 的解决方案。事实上,在大多数(如果不是全部)常见操作系统平台上,根本没有解决方案,AFAIK ...因为平台本身不支持独立于应用程序的强制文件锁定。

关于java - 使用 Java FileLock 有多安全?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/34783799/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com