本文介绍了如何在 Dart 中将 `ByteData` 实例写入文件?的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

我正在使用 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` 实例写入文件?的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持!

08-06 14:55