在 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
可读内容的简单方法。 Properties
取 InputStream
或 Reader
。我可以实现自己的 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));
}
在一个 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
可读内容的简单方法。 Properties
取 InputStream
或 Reader
。我可以实现自己的 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));
}