将资产从捆绑包复制到文件系统

我正在尝试将sqlite数据库从根包复制到文件系统上,以便使用它。

我尝试了许多不同的方法,但是它总是最终将不正确数量的数据写入磁盘。我正在使用的代码如下所示:

Directory appDocDir = await getExternalStorageDirectory();

String path = join(appDocDir.path, "data.db");

bool exists = await new File(path).exists();

if (!exists) {

var out = new File(path).openWrite();

var data = await rootBundle.load("assets/data.sqlite");

var list = data.buffer.asUint8List();

out.write(list);

out.close();

}

回答:

你不能的内容写入Uint8List到一个File使用IOSink.write(其目的是对操作String参数)。您将最终String通过调用toString()your

来编写获得的UTF-8编码表示形式Uint8List,它可能比列表的实际内容大得多。

相反,您可以使用将A写入Uint8List文件IOSink.add

在您提供的示例中,您还可以使用一次写入整个文件new

File(path).writeAsBytes(list)

以上是 将资产从捆绑包复制到文件系统 的全部内容, 来源链接: utcz.com/qa/398127.html

回到顶部