2015-12-15 2 views
0

У меня есть большой файл с сообщениями, указанными в локали. Например:читать только некоторые свойства, используя ResourceBundle

book.registration.error.service = .. 
book.registration.error.empty.book = .. 
book.registration.error.file.format.book = .. 

publisher.register.firstpublisher = .. 
publisher.register.publisherNameUa = .. 
publisher.register.nameRu = .. 
publisher.register.NameEn = .. 

Существует много сообщений. Чтобы прочитать их, я использую

java.util.ResourceBundle.getBundle(messagesLocation, locale) 

но с whis я буду читать ВСЕ сообщения. Есть ли способ читать только сообщения сообщений. Например, только для чтения, которые начинаются с «книги»?

+1

Почему это так плохо? Полагаю, вы сохраните этот комплект для последующего использования? – Jan

ответ

0

Лучший способ добиться того, что вы хотите, - разбить свой очень большой ресурсный пакет на несколько пучков - и поместить все «книги» в конкретный пакет.

Вы можете проанализировать файл самостоятельно, но вам по-прежнему необходимо прочитать весь файл (если он не отсортирован), но это, похоже, преследует цель того, чего вы пытаетесь достичь.

Обычно вы идете по этой дороге только в том случае, если у вас проблемы с памятью или производительностью с одним комплектом - если это проблемы с памятью, может помочь разбить пучки; если это проблемы с производительностью, может помочь инициализация вашего пакета на фоновом потоке.

И в случае, если это не очевидно - вы всегда должны кэшировать комплект! Повторное создание вашего пакета каждый раз является отходом - если вы хотите поддерживать динамически меняющиеся ресурсы, просто отмените кеш, когда ресурсы действительно изменились.

+0

[документация для ResourceBundle.Control.getTimeToLive] (http://docs.oracle.com/javase/8/docs/api/java/util/ResourceBundle.Control.html#getTimeToLive-java.lang.String-java. util.Locale-) указывает, что кеширование всегда выполняется, если только он явно не отключает его. – VGR

+0

@ VGR - Shiny :) - (Прошло некоторое время с тех пор, как я действительно использовал ResourceBundle - назад, когда кеширование должно было быть сделано вручную) – Krease

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