Гость
Целевая тема:
Создать новую тему:
Автор:
Форумы / Java [игнор отключен] [закрыт для гостей] / Парсинг бинарных файлов / 6 сообщений из 6, страница 1 из 1
13.05.2016, 13:38
    #39235123
BlackEric
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Парсинг бинарных файлов
Как быстро парсить бинарные файлы?
Я получаю данные от оборудования. В файле идет заголовок и после него набор данных в виде структур.
На С я бы читал файл в буфер, а потом уже пробегая по буферу считывал данные в соответствующие структуры с побайтным выравниванием.

black-eric.lj.ru
...
Рейтинг: 0 / 0
13.05.2016, 13:47
    #39235138
Hett
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Парсинг бинарных файлов
А в чем проблема?
RandomAccessFile например
...
Рейтинг: 0 / 0
13.05.2016, 13:48
    #39235141
Hett
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Парсинг бинарных файлов
А что за прикол в свои посты ссылки не по теме пихать?
...
Рейтинг: 0 / 0
13.05.2016, 14:08
    #39235161
Leonid Kudryavtsev
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Парсинг бинарных файлов
1.
В "новой" java сделали класс https://docs.oracle.com/javase/7/docs/api/java/nio/ByteBuffer.html

Мне кажется, с помощью него должно быть не сложно. Только в структуре посчитать смещение полей от начала.

2.
Или https://docs.oracle.com/javase/7/docs/api/java/io/DataInputStream.html

с методами readByte, readInt, readFloat etc...
...
Рейтинг: 0 / 0
13.05.2016, 16:22
    #39235333
mayton
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Парсинг бинарных файлов
BlackEricКак быстро парсить бинарные файлы?
Я получаю данные от оборудования. В файле идет заголовок и после него набор данных в виде структур.
На С я бы читал файл в буфер, а потом уже пробегая по буферу считывал данные в соответствующие структуры с побайтным выравниванием.
Да здесь твоя правда. JVM-спецификация не определяет структуру данных никак. Классы имеют
определение весьма размытое и JDK в части публичного API не предоставляет никаких
прямых доступов к этому пространству на запись.

Поэтому самое простое решение это создать свои классы и сделать implements Externalizable
а там уже через поток байтов разбирать InputStream и сеттить поля.

Здесь может пригодится nio.ByteBuffer чтобы переворачивать short, int в обратый порядок если
исходный файл был таковым.

Код: java
1.
2.
ByteBuffer bb = ByteBuffer.wrap(byteArray);
bb.order( ByteOrder.LITTLE_ENDIAN);



+была библиотечка от Apache Commons где были функции для правильного переворачивания Endians.
...
Рейтинг: 0 / 0
13.05.2016, 16:45
    #39235381
Atum1
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Парсинг бинарных файлов
reading binary file in spark scala

Код: java
1.
2.
3.
4.
5.
import java.nio.ByteBuffer

val result = YourRDD.map(x=>(ByteBuffer.wrap(x.take(4)).getInt,
             ByteBuffer.wrap(x.drop(4).take(2)).getShort,
             ByteBuffer.wrap(x.drop(6)).getLong))



на java аналогично :)
...
Рейтинг: 0 / 0
Форумы / Java [игнор отключен] [закрыт для гостей] / Парсинг бинарных файлов / 6 сообщений из 6, страница 1 из 1
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]