Apache POI HMEF - Как получить размер вложения из сообщения MS TNEF?

У меня есть HMEFMessage и итерации всех вложений с помощью

for (Attachment tnefAttachment : hmef.getAttachments()) {

Размер вложения можно получить, используя tnefAttachment.getMAPIAttribute(MAPIProperty.ATTACH_SIZE), Этот метод возвращает экземпляр MAPIAttribute, и он имеет только getData(), который возвращает byte[].

Как я могу преобразовать byte [] из MAPIAttribute в Long (размер)?

Согласно этому - https://poi.apache.org/apidocs/org/apache/poi/hmef/attribute/package-summary.html - существует MAPIStringAttribute.getAsString(attr), который не работает с ATTACH_SIZE.

РЕДАКТИРОВАТЬ - ATTACH_SIZE является длинным в соответствии с http://grepcode.com/file/repo1.maven.org/maven2/org.openl.rules/org.openl.lib.poi.dev/5.9.4.1/org/apache/poi/hsmf/datatypes/MAPIProperty.java.

1 ответ

MAPIProperty.ATTACH_SIZE указывает только атрибут, который вы запрашиваете getMAPIAttribute() поэтому его тип не имеет значения.

Я предлагаю использовать размер контента для решения вашей проблемы:

tnefAttachment.getContent().length

даст вам размер вложения в байтах.

Если вы хотите преобразовать байтовый массив в long, посмотрите этот вопрос.

Другие вопросы по тегам