Flutter 创建一个文件并写入其内容
Flutter create a file and write its contents
我正在开发一个从服务器收集文本内容的应用程序,下一步我试图将它们保存到单独的文件中,以便与应用程序存储一起保存。存储是一个名为 'storage' 的文件夹。在存储中,有一个包含文件列表的“fileList.txt”文件。
在pubspec.yaml中我在assets中声明了这个文件夹如下:
assets:
- storage/
我可以使用以下函数读取它:
Future<String> readFileContent() async {
String response;
response =
await rootBundle.loadString('storage/fileList.txt');
return response;
}
为了保存文件,我使用了使用“path_provider”包的在线示例。但是,当我尝试使用以下函数保存下载的文件之一(例如“file4.dat”时,我遇到了以下错误。我该如何解决这个问题?
saveFileLocally() async {
await _writeFile();
}
Future<Null> _writeFile() async {
await (await _getLocalFile()).writeAsString(vars.fileContents);
}
Future<File> _getLocalFile() async {
// get the path to the document directory.
String dir = (await PathProvider.getApplicationSupportDirectory()).path;
print('DIR :::: ' + dir);
return new File(
'$dir/storage/files/file' + vars.newFileID.toString() + '.dat');
}
错误是:
Unhandled Exception: FileSystemException: Cannot open file,
path = '/data/user/0/com.example.ferenova_flutter_app/files/storage/file4.dat'
(OS Error: No such file or directory, errno = 2)
谢谢大家保重!!! :)
我认为你应该检查你的路径。
storage/fileList.txt 与 $dir/storage/files/file' + vars.loadedFileID.toString() + '.dat'
不同
你应该试试:
response =
await rootBundle.loadString('$dir/storage/files/file' + vars.loadedFileID.toString() + '.dat'');
或类似的东西。
GL
在查看 path_provider
示例时,我 运行 了解了这个重要的细节:
Directory directory = Platform.isAndroid
? await getExternalStorageDirectory() //FOR ANDROID
: await getApplicationSupportDirectory(); //FOR iOS
这解决了我的问题。我不再使用默认 rootBundle
资产来处理任何外部文件。
创建对文件完整位置的引用。您可以使用 dart:io
库中的文件 class 来实现此目的。
Future<File> get _localFile async {
final path = await _localPath;
return File('$path/counter.txt');
}
将一些数据写入文件。计数器是一个整数,但使用 '$counter'
语法作为字符串写入文件。
Future<File> writeCounter(int counter) async {
final file = await _localFile;
// Write the file
return file.writeAsString('$counter');
}
我正在开发一个从服务器收集文本内容的应用程序,下一步我试图将它们保存到单独的文件中,以便与应用程序存储一起保存。存储是一个名为 'storage' 的文件夹。在存储中,有一个包含文件列表的“fileList.txt”文件。
在pubspec.yaml中我在assets中声明了这个文件夹如下:
assets:
- storage/
我可以使用以下函数读取它:
Future<String> readFileContent() async {
String response;
response =
await rootBundle.loadString('storage/fileList.txt');
return response;
}
为了保存文件,我使用了使用“path_provider”包的在线示例。但是,当我尝试使用以下函数保存下载的文件之一(例如“file4.dat”时,我遇到了以下错误。我该如何解决这个问题?
saveFileLocally() async {
await _writeFile();
}
Future<Null> _writeFile() async {
await (await _getLocalFile()).writeAsString(vars.fileContents);
}
Future<File> _getLocalFile() async {
// get the path to the document directory.
String dir = (await PathProvider.getApplicationSupportDirectory()).path;
print('DIR :::: ' + dir);
return new File(
'$dir/storage/files/file' + vars.newFileID.toString() + '.dat');
}
错误是:
Unhandled Exception: FileSystemException: Cannot open file,
path = '/data/user/0/com.example.ferenova_flutter_app/files/storage/file4.dat'
(OS Error: No such file or directory, errno = 2)
谢谢大家保重!!! :)
我认为你应该检查你的路径。
storage/fileList.txt 与 $dir/storage/files/file' + vars.loadedFileID.toString() + '.dat'
不同你应该试试:
response =
await rootBundle.loadString('$dir/storage/files/file' + vars.loadedFileID.toString() + '.dat'');
或类似的东西。
GL
在查看 path_provider
示例时,我 运行 了解了这个重要的细节:
Directory directory = Platform.isAndroid
? await getExternalStorageDirectory() //FOR ANDROID
: await getApplicationSupportDirectory(); //FOR iOS
这解决了我的问题。我不再使用默认 rootBundle
资产来处理任何外部文件。
创建对文件完整位置的引用。您可以使用 dart:io
库中的文件 class 来实现此目的。
Future<File> get _localFile async {
final path = await _localPath;
return File('$path/counter.txt');
}
将一些数据写入文件。计数器是一个整数,但使用 '$counter'
语法作为字符串写入文件。
Future<File> writeCounter(int counter) async {
final file = await _localFile;
// Write the file
return file.writeAsString('$counter');
}