Как прочитать размер в байтах синтаксиса в конфигурации Play (HOCON)?

В документации Play утверждается, что она поддерживает объявление размеров в префиксах количества (МБ, МиБ, ГБ и т. д.). Однако в ней не указано, как я должен читать такие значения в коде.

У меня есть следующее значение конфигурации:

discavo.upload.image.maxSize = 2 MiB

и я попытался загрузить его как

current.configuration.getInt("discavo.upload.image.maxSize").get

но получил следующую ошибку:

Configuration error[conf/application.conf: 129: discavo.upload.image.maxSize has type STRING rather than NUMBER]

person Zoltán    schedule 26.01.2016    source источник


Ответы (2)


Я обнаружил, что вы должны использовать getBytes вместо getInt, который возвращает Option[Long]:

current.configuration.getBytes("discavo.upload.image.maxSize").get.toInt
person Zoltán    schedule 26.01.2016

в conf просто напишите следующее:

discavo.upload.image.maxSize = 2

вместо вашего кода:

discavo.upload.image.maxSize = 2 MiB

причина в том, что когда вы получаете «discavo.upload.image.maxSize», вы получаете «2 МБ», включая число «2» и его единицу «МиБ», которую метод «toInt» может преобразовать в число.

Удачи с тобой

person Jerry    schedule 29.01.2016
comment
Я не ожидаю получить 2, а 2097152, то есть 2^20, что единица правильно представляет. - person Zoltán; 29.01.2016