Распространение файлов с помощью приложения для Android

#android #database

#Android #База данных

Вопрос:

Я хотел создать приложение, которое имело бы свою собственную базу данных. Я знаю, что LiteSQL можно использовать, но помимо этого мне разрешено использовать стандартную файловую систему, используя FileInputStream и FileOuputStream.

Я знаю, что могу создать файл с помощью FileOutputStream, и он будет записан в /data /data/com.mydomain/files / directory. Я также знаю, что после записи файла он останется там и будет доступен для чтения при следующем запуске приложения.

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

На самом деле, если бы я решил использовать LiteSQL вместо этого, я бы столкнулся с аналогичной проблемой. Верно?

Заранее спасибо,

М.К.

Ответ №1:

Вы можете поместить любые ресурсы, которые не нужно компилировать, в /res/raw каталог.

Вы могли бы поместить туда свой файл и при первом запуске приложения прочитать файл с помощью getResources().openRawResource() метода, а затем записать содержимое в файл на устройстве.

В прошлом я использовал файл дампа базы данных из /res/raw каталога для первоначального заполнения базы данных (это может занять много времени, если вам нужно вставить много данных). Возможно, туда можно поместить фактический файл базы данных SQLite, который вы могли бы просто скопировать на устройство.

Комментарии:

1. Спасибо за ваш ответ. Я могу поместить некоторый файл данных в каталог / res / raw и попытаюсь прочитать его оттуда. Я новичок в Android, но я ожидал, что будет какой-то стандартный способ доставки приложений с некоторым встроенным файлом данных. Например: приложение использует список городов, и пользователь может добавлять новые города в список. В приложении должен где-то храниться список городов. Мне кажется странным, что приложение в таком случае должно обнаруживать первый запуск и заполнять базу данных вместо доставки предварительно подготовленного файла данных.