Мне нужно создать объект SQLiteDatabase из файла .db, который находится внутри файла .zip, и сохранить его в переменной БЕЗ извлечения файлов.
Файл .zip всегда будет иметь то же имя и всегда есть только 1 запись, а именно файл базы данных.
Когда я пытаюсь создать файл базы данных из файла .zip, он возвращает мне ZipEntry
, который не может быть приведен к File
, что что усложняет.
В качестве альтернативы, когда я пытаюсь скормить сам файл .zip openDatabase("path-to-zip", null, SQLiteDatabase.OPEN_READONLY)
, я получаю следующую ошибку:
файл зашифрован или это не база данных (код 26)
Я провел много исследований, но просто не могу найти решение где-либо. Кто-нибудь знает как это сделать? Ниже моя установка:
class DatabaseHelper(private val mContext: Context, factory: SQLiteDatabase.CursorFactory?) :
SQLiteOpenHelper(mContext, DB_NAME, factory, 1) {
private lateinit var mDatabase: SQLiteDatabase
companion object {
private val PATH: String = "../myZipFile.zip"
private val DB_NAME = ZipFile(PATH).entries().nextElement().name
}
init {
try {
mDatabase = SQLiteDatabase.openDatabase(PATH, null, SQLiteDatabase.OPEN_READONLY)
} catch (e: Exception) {
e.printStackTrace()
}
}
}