如何从内存中的字节创建“伪”的dart:io文件?

Set*_*add 8 dart flutter

我有一个“ blob”的内存中字节,但是我想使用“ blob”处理的API仅接受dart:io File对象。

有没有一种方法可以创建一个“伪造的” dart:io文件,仅包装内存中的字节,以便将该“伪造的”文件传递给我的API?

假设文件系统不存在,并假定我无法将内存中的字节写入“真实”文件。

谢谢!

Put*_*yah 11

添加路径提供程序依赖于 pubspec.yaml

dependencies:
  path_provider: 0.2.2
Run Code Online (Sandbox Code Playgroud)

将字节数据写入文件,使用它,然后将其删除。

import 'dart:io';
import 'package:path_provider/path_provider.dart';

main() async {
  String dir = (await getTemporaryDirectory()).path;
  File temp = new File('$dir/temp.file');
  var bytes = [0, 1, 2, 3, 4, 5];
  await temp.writeAsBytes(bytes);
  /*do something with temp file*/
  temp.delete();
}
Run Code Online (Sandbox Code Playgroud)

  • 谢谢,但是这个解决方案假设有一个文件系统。我最初的问题是询问如何在没有任何文件系统的情况下创建一个假文件。我将在原始问题中澄清。 (2认同)
  • 如果我们创建实现 File 的 FakeFile 类怎么办 ``` class FakeFile 实现 File { List<int> _bytes = []; FakeFile(List<int> bytes) { _bytes = bytes; @override List<int> readAsBytesSync() => _bytes; @override String readAsStringSync({Encoding encoding: UTF8}) => UTF8.decode(_bytes); //TODO 所有实现 } var file = new FakeFile([65, 66, 67]); 打印(file.readAsStringSync()); `` (2认同)

Hug*_*sos 11

您可以使用MemoryFileSystem文件创建内存文件

例子:

File file = MemoryFileSystem().file('test.dart')
  ..writeAsBytesSync(blobBytes);
Run Code Online (Sandbox Code Playgroud)