我正在 Flutter 中创建一个测验应用程序,我在 CSV 文件中收集了一些问题。我想将 CSV 文件存储在 firebase 中,并通过读取 CSV 文件将问题显示到应用程序中。但只是为了检查读取文件是否像它应该的那样简单,我尝试以这种方式读取一个虚拟文件:
new File('file.txt').readAsString().then((String contents) {
print(contents);
});
Run Code Online (Sandbox Code Playgroud)
从 main.dart 返回 Widget 之前。但我收到此错误:
`FileSystemException: Cannot open file, path = 'file.txt' (OS Error: No such file or directory, errno = 2)`
Run Code Online (Sandbox Code Playgroud)
即使我在与“main.dart”相同的目录中创建了一个虚拟的“file.txt”文件。
我试着做'./file.txt',甚至是windows资源管理器中的绝对路径,但似乎都不起作用。
如何解决这个问题?
Gün*_*uer 10
该path_provider包允许您访问 temp 和 appDir 目录
https://pub.dartlang.org/packages/path_provider
Run Code Online (Sandbox Code Playgroud)Directory tempDir = await getTemporaryDirectory(); String tempPath = tempDir.path; Directory appDocDir = await getApplicationDocumentsDirectory(); String appDocPath = appDocDir.path;
您可以使用https://pub.dartlang.org/packages/path的join()方法以依赖于平台的方式连接路径,或者只使用字符串连接,如
String filePath = '${appDocDir.path}/file.txt';
new File(filePath).readAsString().then((String contents) {
print(contents);
});
Run Code Online (Sandbox Code Playgroud)
您可以使用 join 安全地加入文件或文件夹:
例子:
import 'package:path/path.dart' as Path;
String fileName = Path.join('/storage/emulated/0/', 'MyFolder', 'file.txt');
Run Code Online (Sandbox Code Playgroud)
结果:
文件名 = '/storage/emulated/0/MyFolder/file.txt'
| 归档时间: |
|
| 查看次数: |
19416 次 |
| 最近记录: |