База данных из Assets

Если вы в своём проекте используете подготовленную базу данных, то при первом запуске приложения её нужно импортировать в проект. Импортировать базу данных будем из папки Assets проекта. База данных из Assets импортируется почти во всех случаях.

На вход метод dbLoad получает Context, имя базы данных и имя пакета.
В переменную DB_PATH прописываем путь с использованием имени БД и пакета.
Создаём файл базы данных dbPath. Если файл не существует создаём путь к файлу.

Создаём входящий поток inputStream как файл базы данных из папки Assets.
Создаём исходящий поток output, как путь + имя файла.

Входящий поток переписываем в буфер и исходящий поток заполняем буфером.
Закрываем входящий и исходящий потоки .close.

Всё, файл базы данных записан в память устройства (т. е. база данных из Assets импортирована).

// ИМПОРТ ГОТОВОЙ БАЗЫ ДАННЫХ ИЗ ASSETS
public static void dbLoad(Context context, String dbName, String packageName){
   String DB_PATH = "/data/data/" + packageName + "/databases/";
   File dbPath = context.getDatabasePath(dbName);
   if (!dbPath.exists()) {
      // Убедимся, что у нас есть путь к файлу
      dbPath.getParentFile().mkdirs();
      try {
        InputStream inputStream = context.getAssets().open(dbName);
        OutputStream output = new FileOutputStream(DB_PATH + dbName);
        byte[] buffer = new byte[8192];
        int length;
        while ((length = inputStream.read(buffer, 0, 8192)) > 0) {
                    output.write(buffer, 0, length);
      }
         output.flush();
         output.close();
         inputStream.close();
         //Log.d("myLog", "Записалось");
      } catch (IOException e) {
         e.printStackTrace();
      }
   }
}
Поделись с друзьями:

Оставьте комментарий