Flutter 文件读写

在某些时候可能需要下载或保存文件到手机本地,这时候使用文件读写接口可以实现。

在 Flutter 里实现文件读写,需要使用 path_provider 和 dart 的 io 模块。path_provider 负责查找 iOS/Android 的目录文件,IO 模块负责对文件进行读写。

首先安装依赖:

dependencies:
  path_provider: ^0.4.1

通常来说会有以下几个步骤:

  • 找到正确的本地路径。
  • 创建对文件位置的引用。
  • 将数据写入文件。
  • 从文件中读取数据。

本地路径

path_provider 插件提供了一种平台不可知的方式来访问设备文件系统上的常用位置。 该插件当前支持访问两个系统文件位置:

  • 临时目录: 一个临时目录(缓存),系统可以随时清除。 在 iOS 上,这对应于 NSTemporaryDirectory() 返回的值。 在 Android 上,这是 getCacheDir() 回的值。
  • 文档目录:应用程序的目录,用于存储只有它可以访问的文件。 只有当应用程序被删除时,系统才会清除目录。 在 iOS 上,这对应于 NSDocumentDirectory。 在 Android 上这是 AppData 目录。

接下来使用 path_provider 查找本地路径。

import 'package:path_provider/path_provider.dart';

localPath() async {
    try {
        var tempDir = await getTemporaryDirectory();
        String tempPath = tempDir.path;

        var appDocDir = await getApplicationDocumentsDirectory();
        String appDocPath = appDocDir.path;

        print('临时目录: ' + tempPath);
        print('文档目录: ' + appDocPath);
    }
    catch(err) {
        print(err);
    }
}

// 临时目录: /data/user/0/com.example.myapp/cache
// 文档目录: /data/user/0/com.example.myapp/app_flutter

文件位置引用

一旦我们知道在哪里存储文件,我们需要创建一个文件的完整位置的引用。 我们可以使用 dart:io 库中的 File 类来实现此目的。

localFile(path) async {
    return new File('$path/counter.json');
}

读写文件

在对文件引用之后,就可以对文件进行读写操作了。

// 读取 json 数据
readJSON() async {
    try {
        final file = await localFile(await localPath());
        String str = await file.readAsString();
        return json.decode(str);
    }
    catch (err) {
        print(err);
    }
}

// 写入 json 数据
writeJSON(obj) {
    try {
        final file = await localFile(await localPath());
        return file.writeAsString(encode(obj));
    }
    catch (err) {
        print(err);
    }
}
©著作权归作者所有,转载或内容合作请联系作者
【社区内容提示】社区部分内容疑似由AI辅助生成,浏览时请结合常识与多方信息审慎甄别。
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

相关阅读更多精彩内容

  • 1、通过CocoaPods安装项目名称项目信息 AFNetworking网络请求组件 FMDB本地数据库组件 SD...
    阳明AI阅读 16,228评论 3 119
  • 原博客地址:https://www.cnblogs.com/yangyxd/p/9232308.html Flut...
    西瓜太郎123阅读 1,187评论 0 17
  • 厌倦了微博的嘈杂, 想躲掉朋友圈的攀比炫耀, 大量的垃圾信息占用着我的脑容量, 每日看着朋友们发的各种看起来精彩的...
    亦白阅读 383评论 0 0
  • 2016.4.8第一次上陈浪老师的九型工作坊,经过复训和二阶三阶的学习,还有不断地参加共修活动,从一开始找到自己模...
    竺子阅读 239评论 0 0

友情链接更多精彩内容