我尝试使用大的db文件。因此,我的代码将此文件从Assets文件夹复制到Application-Documents-Folder,如下面的代码示例所示。
对于小文件,我的代码工作得很好,并且我可以在数据库上工作得很好。
但是,如果我尝试使用较大的db文件(> 665MB),那么就好像我的Flutter应用中的Android部分一样开始崩溃。 (实际上,无论db-File到底有多大,iOS都可以正常工作。)。仅适用于Android,大的db-File会破坏事情。
以下Dart代码不适用于Android内部的大文件(> 665MB)-(但适用于小文件):
Future<Database> initializeDatabase() async {
Directory directory = await getApplicationDocumentsDirectory();
var dbPath = join(directory.path, "ch_departures.db");
// copy db file from Assets folder to Documents folder (only if not already there...)
if (FileSystemEntity.typeSync(dbPath) == FileSystemEntityType.notFound) {
ByteData data = await rootBundle.load("assets/ch_departures.db");
writeToFile(data, dbPath);
}
// Open/create the database at a given path
var departuresDatabase = await openDatabase(dbPath);
return departuresDatabase;
}
// HERE IS WHERE THE CODE CRASHES (WHEN TRYING TO WRITE THE LOADED BYTES)
void writeToFile(ByteData data, String path) {
final buffer = data.buffer;
return new File(path).writeAsBytesSync(
buffer.asUint8List(data.offsetInBytes, data.lengthInBytes));
}
我尝试使用Flutter App的Android部分的gradle.properties
文件。
在gradle.properties中,我尝试过:
org.gradle.jvmargs=-Xmx3g -XX:MaxPermSize=2048m
但不幸的是,没有成功。
您对如何使用较大的文件(> 665MB)进行所有工作有任何想法吗????
答案 0 :(得分:0)
对于我遇到的Flutter的大文件复制问题,终于有了解决方案。我创建了一个Flutter插件,该插件分别在iOS和Android本地进行文件复制。
The Flutter plugin is called large_file_copy
and can be found here。