В настоящее время я нахожусь в стадии планирования приложения Android , в котором мне нужно будет прочитать некоторые значения, хранящиеся в файлах. Значения будут поплавками неизвестной (но потенциально большой) суммы, которая в приложении будет помещена в FloatBuffer
с при загрузке. Поплавковые значения будут представлены группами по пять и группами по три.Эффективное хранение массивов поплавка и коротких значений в файле
У меня не так много опыта, когда дело доходит до эффективного написания файла (или чтения), но моя идея состоит в том, чтобы создать файлы с помощью DataOutputStream
, чтобы написать поплавки, которым предшествует индекс длины, описывающий количество пяти -группы. После этой суммы можно записать три группы.
Поскольку я пишу это, я также нашел FileChannel
, который может помочь с чтением непосредственно в буферах, но я никогда не использовал это раньше и немного не знаю, как его использовать в этом случае.
Теперь, прежде чем я на самом деле напишу какой-либо код, я хотел бы получить информацию об этом. Будет ли это эффективно с помощью этого (я специально думаю о чтении из файла в буфер), или есть лучший способ сделать это?
я буду включать некоторые спецификации ниже файла:
Файл должен быть в состоянии:
- содержат группы из пяти поплавков.
- Содержит группы из трех поплавков. (Оба в том же файле)
- При заказе. Очень важен порядок групп, а также порядок значений в группах.
- Позволяет эффективно использовать (быстро и не слишком много) в FloatBuffer.
Файл не должен быть:
- модифицируемых. Приложение будет читать только данные из файлов, они никогда не будут изменены после того, как они были.
- Безопасный. Данные в файлах никогда не будут представлять ничего такого, как пароли или другие конфиденциальные данные.
- Быстро писать. Создание файла будет сделано заранее, на компьютере. В мобильном приложении он будет доступен только для чтения.
Благодарим за ответы.
Редактировать: после некоторого быстрого и грязного тестирования, я сравнил производительность RandomAccessFile и буферизованного DataInputStream для чтения данных. Результаты показывают, что DataInputStream работает намного быстрее (10-100%, в зависимости от количества файлов).
Вы также можете использовать «Сканер» для чтения из файла - или «RandomAccessFile» – fge