将资产从捆绑包复制到文件系统
我正在尝试将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