3

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

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

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

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

但是,我没有看到一种简单的方法可以将 aFileChannel转换为Properties. Properties需要InputStream, 或Reader. 我可以实现自己的阅读器,但我确信我的团队宁愿使用开箱即用的东西(如果有的话)。

有谁知道这样的事情?

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

4

1 回答 1

4

看来您错过了Channels辅助类的存在:

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));
}
于 2017-05-19T09:04:01.423 回答