我想在颤振中将Filea转换为一个ByteData对象。像这样的东西:
import 'dart:io';
File file = getSomeCorrectFile(); //This file is correct
ByteData bytes = ByteData(file.readAsBytesSync()); //Doesnt compile
return bytes;
Run Code Online (Sandbox Code Playgroud)
我知道ByteData构造函数接收字节数的长度并将它们初始化为 0,所以我可以做类似的事情,ByteData(file.readAsBytesStync().length);但是我该如何填充它们?我错过了什么?
jam*_*lin 28
在 Dart 2.5.0 或更高版本中,我认为以下内容应该有效:
import 'dart:io';
import 'dart:typed_data';
...
File file = getSomeCorrectFile();
Uint8List bytes = file.readAsBytesSync();
return ByteData.view(bytes.buffer);
Run Code Online (Sandbox Code Playgroud)
(在 Dart 2.5.0 之前,该file.readAsBytesSync()行应该是:
Uint8List bytes = file.readAsBytesSync() as Uint8List;
Run Code Online (Sandbox Code Playgroud)
File.readAsBytes/File.readAsBytesSync曾经被声明为返回 a List<int>,但返回的对象实际上是一个Uint8List子类型。)
一旦您将字节作为 a Uint8List,您就可以提取它ByteBuffer并从中构造 a ByteData。
Bou*_*egh 10
在 Dart 2.9 中:
import 'dart:io';
import 'dart:typed_data';
final file = getSomeCorrectFile(); // File
final bytes = await file.readAsBytes(); // Uint8List
final byteData = bytes.buffer.asByteData(); // ByteData
return byteData;
Run Code Online (Sandbox Code Playgroud)
这对我有用......
Uint8List uint8list = Uint8List.fromList(File(path).readAsBytesSync())
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
14844 次 |
| 最近记录: |