【问题标题】:flutter file storage application stateflutter 文件存储应用状态
【发布时间】:2021-03-26 16:27:39
【问题描述】:

我正在尝试读取/写入将为我的应用程序存储数据的文件(json 文件)。对于我应该在我的项目中保存这样一个文件的位置,我有点困惑。一方面,我似乎应该创建一个资产并按照此处的说明进行操作:

https://flutter.dev/docs/development/ui/assets-and-images#loading-text-assets

另一方面,我似乎应该使用一个叫做“文档目录”的东西

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上以调试模式运行时才有意义???

【问题讨论】:

    标签: flutter dart


    【解决方案1】:

    您应该使用您所说的“文档目录”,这是首选方法。 这会将文件读/写到安装了您的应用的设备本地存储中,而不是在您的计算机本地存储中。


    /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

    【讨论】:

    • 只想补充一点,如果您希望用户也可以访问数据,请使用getExternalStorageDirectory()
    • 有没有办法在不使用 android studios 的情况下访问这个文件?
    • 你可以尝试使用模拟器文件资源管理器,VS code 不支持这个。我已经为 vscode github.com/Dart-Code/Dart-Code/issues/2712 请求了这个
    猜你喜欢
    • 2021-12-10
    • 1970-01-01
    • 1970-01-01
    • 2017-02-23
    • 2021-08-22
    • 1970-01-01
    • 1970-01-01
    • 2015-10-28
    • 1970-01-01
    相关资源
    最近更新 更多