【发布时间】:2017-02-10 20:07:35
【问题描述】:
在 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。我可以实现自己的阅读器,但我确信我的团队宁愿我使用开箱即用的东西,如果有的话。
有人知道这样的事吗?
我的基本假设不正确吗?如果是这样,这个过程的正确流程是什么?
【问题讨论】:
-
所有锁定和
FileChannel并发症是怎么回事?常规的属性文件读取真的很简单。 -
我希望外部进程正在写入此文件。我不想在另一个进程正在修改它的同时尝试加载属性。
-
似乎基于文件的通信可能不合适。
标签: java properties file-locking java.nio.file