![]() |
Модераторы: LSD, AntonSaburov |
![]() ![]() ![]() |
|
zyxel0 |
|
|||
Новичок Профиль Группа: Участник Сообщений: 4 Регистрация: 28.12.2010 Репутация: нет Всего: нет |
Надо прочитать и распихать содержимое файла. Беда в том, что файл бинарный, но в нем есть шапка.
То есть сначала идут несколько строк из которых надо получить значения, а все остальное загнать в память Как лучше такой файл обработать ? Я пытаюсь сейчас использовать Scanner, но я не уверен что это правильное решение Вот пример этого файла.
|
|||
|
||||
triclosan |
|
|||
Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 515 Регистрация: 18.8.2006 Репутация: нет Всего: 12 |
||||
|
||||
zyxel0 |
|
||||
Новичок Профиль Группа: Участник Сообщений: 4 Регистрация: 28.12.2010 Репутация: нет Всего: нет |
Спасибо
пока я делаю так
Последняя строка указанного фрагмента выводит
как мне выкинуть не "печатный" символ ? аналогичный вопрос о строке Constant=29 №; как разбить ее на "символьность" и "бинарность" ? |
||||
|
|||||
triclosan |
|
|||
Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 515 Регистрация: 18.8.2006 Репутация: нет Всего: 12 |
использовать вместо nextLine - nextByte()
или если количество "мусорных" байт фиксировано (1 в вашем случае)
|
|||
|
||||
Kircul |
|
||||||
Бывалый ![]() Профиль Группа: Участник Сообщений: 166 Регистрация: 20.2.2007 Репутация: 6 Всего: 7 |
Сомневаюсь что это правильно. Параметр в методе substring означает не кол-во байт, а кол-во символов (а это большая разница!). Что-то я совсем вас не понимаю, о каком непечатном символе говорите?
И тут тоже не понятно, где бинарные данные вы видите? Я могу пока что трактовать это значение как строку. Если это возможно приложите, плз, файл который вам хочется распарсить. |
||||||
|
|||||||
zyxel0 |
|
|||
Новичок Профиль Группа: Участник Сообщений: 4 Регистрация: 28.12.2010 Репутация: нет Всего: нет |
||||
|
||||
Kircul |
|
|||
Бывалый ![]() Профиль Группа: Участник Сообщений: 166 Регистрация: 20.2.2007 Репутация: 6 Всего: 7 |
На сколько я вижу данный файл разделен на блоки байтом '03', один из блоков представляет из себя ассоциативный массив записанный вроде бы строками разделенными байтом '0A'.
Т.о. если вы разделите файл на блоки символом '03' то проблема с непечатным символом у вас пропадет. Я описал только один блок, он символьный (еще один, первый, тоже частично символьный) остальные похоже бинарные. Дальше разбирайтесь сами. З.Ы. мои рассуждения это всего лишь догадки и могут быть в корне неверные. |
|||
|
||||
Temdegon |
|
|||
![]() Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 429 Регистрация: 11.10.2008 Где: Minsk Репутация: 7 Всего: 9 |
Мне кажется надо плясать от того, что и как в это файл записывается, и уже исходя из этого строить алгоритм чтения.
Т.е. нужно знать, что читать из файла и в какой последовательности. К примеру, мы знаем, что этот файл - база данных телефонного справочника, и запись в него происходит примерно так: сначала дата в виде long, потом число записе - n int, а потом туда сериализуются n-записей телефонной книги. Они в свою очередь могут быть экземплярами классов с каким-то набором полей, и сериализоваться через какой-то стандартный механизм языка. Могут быть какими-нить структурами, и записываться туда вручную. Они могут содержать какие-то вложенные структуры или обьекты. В какой кодировке строки, байты пишутся big endian или little endian, разрядность используемых типов данных и т.д. - все это нужно знать. Вот к примеру, в файл подряд пишутся два инта и два лонга. в файле это будет выглядеть как набор байт без каких-либо разделителей. Если вы знаете, что они пишутся в таком порядке, то вы их читаете, и проблем нету. А если не знаете, то как вы это узнаете? А может там вообще не int,int, long, long, а десяток чисел типа byte? |
|||
|
||||
![]() ![]() ![]() |
Правила форума "Java" | |
|
Если Вам помогли, и атмосфера форума Вам понравилась, то заходите к нам чаще! С уважением, LSD, AntonSaburov, powerOn, tux, javastic. |
1 Пользователей читают эту тему (1 Гостей и 0 Скрытых Пользователей) | |
0 Пользователей: | |
« Предыдущая тема | Java: Общие вопросы | Следующая тема » |
|
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности Powered by Invision Power Board(R) 1.3 © 2003 IPS, Inc. |