繁体   English   中英

在 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 ,是获取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);

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

但是,我没有看到将FileChannel转换为Properties可读的内容的简单方法。 Properties采用InputStreamReader 我可以实现我自己的阅读器,但我确信我的团队更愿意使用开箱即用的东西(如果有的话)。

有没有人知道这样的事情?

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

您似乎错过了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));
}

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM