2017-02-10 25 views
1

В программе Java мне присваивается объект java.nio.Path, и мне нужно заблокировать файл, а затем загрузить из него объект java.util.Properties.В Java, используя библиотеку java.nio и FileChannel, как я могу загрузить объект 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 принимает InputStream, или Reader. Я мог бы реализовать своего собственного читателя, но я уверен, что моя команда предпочла бы использовать что-то готовое, если оно доступно.

Кто-нибудь знает о такой вещи?

Является ли мое основное допущение неправильным? Если да, то каков правильный поток для этой процедуры?

+0

Что со всеми запирающим и 'FileChannel' осложнение? Обычное чтение файла свойств очень просто. – Kayaman

+0

Я ожидаю, что внешние процессы будут записываться в этот файл. Я не хочу пытаться загрузить свойства одновременно с изменением другого процесса. – ds390s

+0

Кажется, что общение на основе файлов может быть плохой. – Kayaman

ответ

1

Кажется, вы пропустили существование класса 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)); 
} 

 Смежные вопросы

  • Нет связанных вопросов^_^