问题描述
我正在使用 Flutter 将资产"加载到 File
中,以便本机应用程序可以访问它.
I am using Flutter to load an "asset" into a File
so that a native application can access it.
这是我加载资产的方式:
This is how I load the asset:
final dbBytes = await rootBundle.load('assets/file');
这将返回一个 ByteData
的实例.
This returns an instance of ByteData
.
如何将其写入 dart.io.File
实例?
How can I write this to a dart.io.File
instance?
推荐答案
ByteData
是一个抽象:
ByteData
is an abstraction for:
一个固定长度的随机访问字节序列,它还提供对固定宽度整数和浮点数的随机和未对齐访问由这些字节表示的点数.
正如 Gunter 在评论中提到的,您可以使用 File.writeAsBytes
.但是,它确实需要一些 API 工作才能从 ByteData
获取到 List
.
As Gunter mentioned in the comments, you can use File.writeAsBytes
. It does require a bit of API work to get from ByteData
to a List<int>
, however.
import 'dart:async';
import 'dart:io';
import 'dart:typed_data';
Future<void> writeToFile(ByteData data, String path) {
final buffer = data.buffer;
return new File(path).writeAsBytes(
buffer.asUint8List(data.offsetInBytes, data.lengthInBytes));
}
我还提交了一个问题,以使 Flutter 上的文档更加清晰这个用例.
I've also filed an issue to make the docs on Flutter more clear for this use case.
这篇关于如何在 Dart 中将 `ByteData` 实例写入文件?的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持!