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
会如此滞后我的程序。
我目前正在学习 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
会如此滞后我的程序。