在 Java 中,如何使用 java.nio 库和 FileChannel 从文件加载 Properties 对象?

In Java, using the java.nio library and a FileChannel, how can I load a Properties object from a file?

在一个 Java 程序中,我得到了一个 java.nio.Path 对象,我需要锁定一个文件,然后从中加载一个 java.util.Properties 对象。

我读到获取文件共享锁的正确方法,表示为 Path,是使用共享锁 channel.lock(0L, Long.MAX_VALUE, true)java.nio.channels.FileChannel 锁定它

final FileChannel channel = FileChannel.open(filePath, StandardOpenOption.READ);
final FileLock lock = channel.lock(0L, Long.MAX_VALUE, true);

现在我已经锁定了频道,我假设我现在应该在加载我的属性文件时引用该频道。

但是,我没有看到将 FileChannel 翻译成 Properties 可读内容的简单方法。 PropertiesInputStreamReader。我可以实现自己的 reader,但我确信我的团队宁愿我使用开箱即用的东西(如果可用)。

有人知道这样的事情吗?

我的基本假设不正确吗?如果是这样,此过程的正确流程是什么?

看来你错过了 Channels 助手的存在 class:

Properties properties=new Properties();

try(final FileChannel channel = FileChannel.open(filePath, StandardOpenOption.READ);
    final FileLock lock = channel.lock(0L, Long.MAX_VALUE, true)) {

    properties.load(Channels.newInputStream(channel));
}