Я пытаюсь использовать файл базы данных размером 665 МБ (файл SQLite) для своего приложения.(файл необходим, поскольку он предоставляет автономные данные для приложения общественного транспорта. Поэтому я не могу сделать его меньше).
Пока что при использовании любого файла SQLite во Flutter я обычно копирую его в коде.Исходное местоположение файла ./assets/db_file.db
.Местоположение файла: DocumentsDirectory
.
. Теперь у меня проблема с тем, что копирование файла не работает для моего большого DB-файла размером 665 МБ.
Вот мой код, которыйне удается скопировать из-за большого размера файла.
(для небольших файлов этот код хорошо работает) ...:
(также в симуляторе код работает хорошо, нетнезависимо от размера файла. Проблема возникает только на реальном iPhone) ...
Directory directory = await getApplicationDocumentsDirectory();
var dbPath = join(directory.path, "destinationFile.db");
if (FileSystemEntity.typeSync(dbPath) == FileSystemEntityType.notFound) {
ByteData data = await rootBundle.load("assets/largeFile.db");
List<int> bytes =
data.buffer.asUint8List(data.offsetInBytes, data.lengthInBytes);
await File(dbPath).writeAsBytes(bytes);
}
Для моего файла размером 665 МБ вышеуказанный код вылетает - без сообщения об ошибке: /
следующая строка кода:
ByteData data = await rootBundle.load("assets/largeFile.db");
Вопросы:
Есть ли способ улучшить мой код выше для очень больших файлов, чтобы не происходило аварийное завершение
есть ли способ предоставить db-файл внутри папки Documents в первую очередь (как часть комплекта, то есть, чтобы копирование не требовалось)?
как мне в любом случае работать с таким большим файлом ??