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