flutter - flutter 文件存储应用状态
问题描述
我正在尝试读取/写入将为我的应用程序存储数据的文件(json 文件)。对于我应该在我的项目中保存这样一个文件的位置,我有点困惑。一方面,我似乎应该创建一个资产并按照此处看到的说明进行操作:
https://flutter.dev/docs/development/ui/assets-and-images#loading-text-assets
另一方面,我似乎应该使用一个叫做“文档目录”的东西</p>
https://flutter.dev/docs/cookbook/persistence/reading-writing-files#1-find-the-correct-local-path
按照第一个链接中的示例,我可以将 json 文件加载到我的应用程序中并使用
loadAsset(‘assets/asset.json’)
功能
由此我可以在这个位置很好地读取一个文件,但我无法弄清楚如何写入这个文件。
现在使用第二个链接,我可以使用“文档目录”编写文件。但是,当我尝试找到写入的文件时,我在硬盘上的任何地方都找不到该文件。
所以我的第一个问题是,如果我想存储一个保存我的应用程序状态的文件,我应该在哪里做呢?它应该是一种资产吗?还是应该存储在“文档目录”中?
我的猜测是资产用于只读资产,例如静态配置文件和图像,而“文档目录”是我想存储我的应用程序数据的方式。这个对吗?
如果是这样,当我调试我的应用程序时,如何将文件放入我的“文档目录”以及它在我的项目结构中的什么位置?
当我打印写入文件的位置时,它是:
'/data/user/0/com.example.flutter_expansion_tile_05/app_flutter/tree.json'
这不是我电脑上的有效位置。
我猜“文档目录”(AppData目录)只有在我的手机上运行时才有意义,而不是在我的PC上以调试模式运行时才有意义???
解决方案
如您所说,您应该使用“文档目录”,这是首选方法。 这会将文件读/写到安装了您的应用程序的设备本地存储中,而不是在您的计算机本地存储中。
/data/user/0/com.example.flutter_expansion_tile_05/app_flutter/tree.json
上面的路径是安装应用程序的设备中文件的路径。
现在,如果您使用的是 Android Studio 和 Emulator,那么您可以从 Android Studio 本身查看模拟器文件。
为此,请打开Device File Explorer
按钮或转到
查看 --> 工具窗口 --> 设备文件资源管理器
并导航到给定的路径。
https://developer.android.com/studio/debug/device-file-explorer
推荐阅读
- python - 编写注入漏洞代码 sqlite3
- python - 我对 python 中的 object.partition(element_to_search) 有疑问
- android - Android:仅针对某些目标共享 Intent 调用 onStop
- git - Git 错误:远程解包失败:无法创建临时对象目录 - 尝试推送到远程存储库时
- docker - Facebook 图形 API 和 Docker
- reference - 在 Blazor 中转义“@”字符
- html - 自定义所需输入
- r - 如何选择 R 中 POSIXct 类的变量名称?
- python - 无法在 WSL 上的 pipenv 中创建新的 ipykernel 内核
- laravel - Laravel Mix 和 Monaco 编辑器