gpt4 book ai didi

java - 如何使用 java 锁定文件(如果可能)

转载 作者:塔克拉玛干 更新时间:2023-11-03 01:25:24 27 4
gpt4 key购买 nike

我有一个使用 FileReader 打开文件的 Java 进程。我怎样才能防止另一个(Java)进程打开这个文件,或者至少通知第二个进程文件已经打开?如果文件打开(这解决了我的问题),这会自动使第二个进程出现异常,还是我必须在第一个进程中使用某种标志或参数显式打开它?

澄清:

我有一个 Java 应用程序,它列出了一个文件夹并打开列表中的每个文件以进行处理。它一个接一个地处理每个文件。每个文件的处理包括读取文件和根据内容进行一些计算,大约需要 2 分钟。我还有另一个 Java 应用程序,它做同样的事情,但不是写入文件。我想要的是能够同时运行这些应用程序,所以场景是这样的。 ReadApp 列出文件夹并找到文件 A、B、C。它打开文件 A 并开始读取。 WriteApp 列出文件夹并找到文件 A、B、C。它打开文件 A,看到它是打开的(通过异常或任何方式)并转到文件 B。ReadApp 完成文件 A 并继续到 B。它看到它打开并继续到 C。至关重要的是,当 ReadApp 正在读取同一文件时,WriteApp 不会写入,反之亦然。它们是不同的过程。

最佳答案

FileChannel.lock 可能是您想要的。

try (
FileInputStream in = new FileInputStream(file);
java.nio.channels.FileLock lock = in.getChannel().lock();
Reader reader = new InputStreamReader(in, charset)
) {
...
}

(免责声明:代码未经编译,当然也未经测试。)

请注意 API doc for FileLock 中标题为“平台依赖性”的部分.

关于java - 如何使用 java 锁定文件(如果可能),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/35942974/

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