Flutter文件写入流程

Flutter file writing process

我目前正在学习 Dart,我遇到了一些与文件 read/write.

相关的问题

我有一个蓝牙传感器向我发送数据(非常快),在对其应用一些处理方法后,我想将其写入文件。我刚刚意识到,虽然我正在从蓝牙接收我需要的所有数据,但我并没有将它们全部写入文件。

我有两个文件:一个用于读取数据并对其进行一些处理,另一个用于处理文件操作。

// 1: 读取数据并应用处理

var dataList = [];
Tuple2<String, List<List<double>>> dataParser(List<int> dataFromDevice) {
   ... // Some processing to obtain data
   dataList.add(data);
   if(dataList.isNotEmpty) FileStorage().writeFile();
}

我可以看到我收到的所有数据都很好地写在dataList中。

// 2:文件操作

class FileStorage{
  Future<String?> get _localPath async {
    final currentDirectory = await getApplicationDocumentsDirectory();
    return currentDirectory.path;
  }
  Future<File> get _localFile async {
    final currentPath = await _localPath;
    return File('$currentPath/A_B.bin');
  }
  Future writeFile() async {
    final file = await _localFile;
    await file.writeAsBytes(dataList[0], mode: FileMode.append).whenComplete(() => dataList.removeAt(0)
   }
}

问题实际上发生在 writeFile() 函数中。它正在写入一些数据,但是例如,如果它必须写入 [1, 2, 3, 4, 5],它正在写入 [1, 4, ...]。

我尝试使用其他一些技术但失败了。请问有什么办法可以实现吗?

非常感谢。

我在处理它 1 天后发现了问题...我确定问题出现在 writeFile,因为我 checked dataList[0] 并且它包含我想要的内容。

显然,这个 await _localFile 正在花时间“获取目录路径、创建新文件等”。这是我浪费时间和丢失数据的时刻。

相反,我现在在数据获取的最开始调用_localFile,而不是在writeFile中每次都调用它。这是合乎逻辑的,虽然我不认为 await 会如此滞后我的程序。