复制大文件无法正常工作

时间:2018-12-22 14:11:24

标签: file flutter copy assets large-data

我尝试为Flutter应用程序使用665 MB大小的数据库文件(SQLite文件)。 (该文件是必需的,因为它为公共交通应用程序提供了离线数据。因此,我不能将其缩小)。

到目前为止,在Flutter中使用任何SQLite文件时,我通常都将其复制为代码。 文件的原始位置是./assets/db_file.db。 文件的目标位置是DocumentsDirectory

现在我遇到的问题是该文件副本不适用于665 MB的大型数据库文件。

这是我的代码由于文件太大而无法复制。

(对于较小的文件,此代码效果很好)...:

(同样,在Simulator中,无论文件大小如何,代码都能正常工作。问题仅在实际的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 MB文件,以上代码崩溃-没有错误消息:/

它崩溃的代码行如下:

ByteData data = await rootBundle.load("assets/largeFile.db");

问题:

  • 对于任何超大文件,有什么方法可以改进我的上述代码,以免发生崩溃?

  • 有什么方法可以在文档文件夹内首先提供db文件(作为捆绑软件的一部分,即无需复制)?

  • 无论如何我应该如何处理这么大的文件?

0 个答案:

没有答案