Java NIO - Как эффективно анализировать файл, содержащий как ascii, так и двоичные данные?

У меня есть некоторые файлы данных, которые выглядят примерно так:

text
header
"lots of binary data hear"
/header
more text
header
"more binary data"
/header
....

Размер большинства файлов составляет около 1-5 МБ. Очень маловероятно, что мне придется иметь дело с файлами размером более 30 МБ.

Я новичок в Java NIO, и API выглядит для меня немного как джунгли. Может ли кто-нибудь дать мне какие-либо указания на то, как я должен анализировать такой файл?

Можно ли иметь несколько потоков, потребляющих данные из разных частей файла? Файл будет просто открыт для чтения.


person Kimble    schedule 21.07.2010    source источник
comment
Есть ли у вас какой-либо контроль над форматом файла?   -  person Kathy Van Stone    schedule 23.07.2010


Ответы (3)


Переделайте файл. Это ужасный дизайн.

person user207421    schedule 22.07.2010

Вопрос в том, как бы вы узнали, читаете ли вы текст или двоичные данные. Если есть четкое разграничение текстовых и двоичных областей (например, маркер или определенный размер блока), то я подозреваю, что Preon сможет вам помочь. Preon поддерживает чтение как текстовых, так и двоичных данных. И поскольку я почти уверен, что ваши двоичные данные представляют что-то еще, вы также можете декодировать двоичные биты в более полезную структуру данных, чем просто массив.

person Wilfred Springer    schedule 20.09.2010

вы можете FileChannel.map() и прочитать его как массив.

person irreputable    schedule 21.07.2010
comment
Это просто помещает файл в память. ByteBuffer имеет почти те же методы, что и результат FileChannel.map(). - person Kathy Van Stone; 23.07.2010