flutter文件读写可以对磁盘文件进行操作,实现某些业务场景,那么我们开始来讲下这个文件读写操作。

使用的库插件(package)

dart:io(用于数据处理)

path_provider (用于获取路劲)

操作步骤

1.获取正确的本地路径

2.创建指向文件位置的引用

3.写入数据到文件内

4.从文件读取数据

**1.获取正确的本地路径 **

我们获取路劲用的是这个插件

path_provider

可以看到里面提供了两个获取路劲的方式

Example

Directory tempDir = await getTemporaryDirectory();

String tempPath = tempDir.path;

Directory appDocDir = await getApplicationDocumentsDirectory();

String appDocPath = appDocDir.path;

getTemporaryDirectory:【临时文件夹】

也就是系统可以随时清空的临时缓存文件夹,在IOS中对应NSTemporaryDirectory在安卓中对应getCacheDir()

我们来将信息储存在临时文件夹中,首先我们创建一个Storage类里面开始写

class Storage {

Future get _localPath async {

final _path = await getTemporaryDirectory();

return _path.path;

}

}

**2.创建指向文件位置的引用 **

确定文件储存位置之后,导入我们的io库,使用包里面的File类做泛型,然后获取路劲并且指向我们的文件名

Future get _localFile async {

final path = await _localPath;

return File('$path/counter.txt');

}

**3.写入数据到文件内 **

现在有了可以使用的File,直接就可以来读写数据了,因为我们使用了计数器,所以只需将证书储存为字符串格式,

使用“$counter”即可(解析成整数方法在下一步)

Future writeCounter(counter) async {

final file = await _localFile;

return file.writeAsString('$counter');

}

4.从文件读取数据 ​​​​​​​

现在可以直接用file类来读取文件数据,然后用int的自带解析方法来解析我们读取的String

Future readCounter() async {

try {

final file = await _localFile;

var contents = await file.readAsString();

return int.parse(contents);

} catch (e) {

return 0;

}

}

完整代码

import 'dart:io';

import 'dart:async';

import 'package:flutter/material.dart';

import 'package:path_provider/path_provider.dart';

class Storage {

Future get _localPath async {

final _path = await getTemporaryDirectory();

return _path.path;

}

Future get _localFile async {

final path = await _localPath;

return File('$path/counter.txt');

}

Future readCounter() async {

try {

final file = await _localFile;

var contents = await file.readAsString();

return int.parse(contents);

} catch (e) {

return 0;

}

}

Future writeCounter(counter) async {

final file = await _localFile;

return file.writeAsString('$counter');

}

}

class OnePage extends StatefulWidget {

final Storage storage;

OnePage({this.storage});

@override

_OnePageState createState() => _OnePageState();

}

class _OnePageState extends State {

int _counter;

@override

void initState() {

super.initState();

widget.storage.readCounter().then((value) {

setState(() => _counter = value);

});

}

Future _incrementCounter() async {

setState(() => _counter++);

return widget.storage.writeCounter(_counter);

}

Future _incrementCounterj() async {

setState(() => _counter--);

return widget.storage.writeCounter(_counter);

}

@override

Widget build(BuildContext context) {

return Scaffold(

body: Center(

child: Text(

'$_counter',

style: Theme.of(context).textTheme.display1,

),

),

floatingActionButton: Row(

children: [

FloatingActionButton(

onPressed: () => _incrementCounter(),

child: new Icon(Icons.add),

),

FloatingActionButton(

onPressed: () => _incrementCounterj(),

child: new Icon(Icons.title),

)

],

),

floatingActionButtonLocation: FloatingActionButtonLocation.centerDocked,

);

}

}

flutter 生成文档_flutter 如何实现文件读写(使用篇)相关推荐

  1. flutter 生成文档_Flutter文件操作

    path_provider获取应用存储路径 path_provider是flutter提供的一个获取应用存储路径的插件,它封装了统一的api来获取Android和ios两个平台的应用存储路径,提供的a ...

  2. java 自动生成文档_[原]java开发文档的自动生成方式

    对于Java注释我们主要了解三种: // 注释一行 /* ...... */ 注释若干行 第三种,文档注释: /** ...... */ 注释若干行,并写入 javadoc 文档 通常这种注释的多行写 ...

  3. 【飞书应用】自动生成文档

    飞书开放平台 飞书开放平台,里面有关于飞书提供的一些供开发者使用的api,可以用来开发飞书的自定义应用,本次使用里面文档相关的api来自动生成文档 创建飞书应用 可以根据飞书官方文档,创建飞书应用,本 ...

  4. oracle导出pdm文件命令,利用PowerDesigner逆向工程导出PDM模型及生成文档

    最近需要对老项目进行重构优化,由于项目都是好几年前的,相关设计资料很不全,最基本的数据库设计文档都没有,只能利用PowerDesigner逆向工程导出PDM模型及生成word文档:以下简单介绍导出模型 ...

  5. showdoc如何创建文件夹_showDoc生成文档

    1. 创建项目 2. 获取api_key和api_token 1. 打开设置 2. 获取api_key和token 3. 生成文档 1. 先cd进入你的项目目录,命令行模式下输入: wget http ...

  6. Objective-C自动生成文档工具:appledoc

    作者 iOS_小松哥 关注 2016.12.13 15:47* 字数 919 阅读 727评论 10喜欢 35 由于最近琐事比较多,所以好久没有写文章了.今天我们聊一聊Objective-C自动生成文 ...

  7. Objective-C 自动生成文档工具:appledoc

    来源:iOS_小松哥 www.jianshu.com/p/fd4d8d6b6177 如有好文章投稿,请点击 → 这里了解详情 由于最近琐事比较多,所以好久没有写文章了.今天我们聊一聊Objective ...

  8. java前端目录_[Java教程]前端那点事儿——Tocify自动生成文档目录

    [Java教程]前端那点事儿--Tocify自动生成文档目录 0 2016-06-29 22:00:07 今天偶然间看到文档服务器有一个动态目录功能,点击目录能跳转到指定的位置:窗口滑动也能自动更新目 ...

  9. linux c/c++ 代码使用 doxygen 自动生成文档

    www.doxygen.org 的使用非常方便,下面分成2步介绍一下 1. 注释风格,需要在c/c++代码中按照下面的风格添加注释,基本上还是很顺手的 C++的注释风格 主要使用下面这种样式:即在注释 ...

最新文章

  1. C#格式化数值结果表(格式化字符串)
  2. Ubuntu系统(七)-安装FTP
  3. Wireshark抓取RTP包,还原语音
  4. python去停用词用nltk_【NLTK】安装和使用NLTK分词和去停词
  5. JavaScript ES2021 新特性解析
  6. 练习四十四:整数的排序
  7. WinRAR备份技巧 - imsoft.cnblogs
  8. java.lang.NoSuchMethodError: org.jaxen.dom4j.DocumentNavigator.getInstance()【可能的解决办法】
  9. 拉卡拉支付最新支付方式预览——刷脸支付上线
  10. 常见函数泰勒公式展开(清晰)
  11. 计算机模式识别科学家年薪,年薪可达80万,学人工智能要去这些学校
  12. 用php上传头像的步骤,php怎么上传头像
  13. 通过puppet hiera配置bigtop大数据集群
  14. 国家药品监督管理局药品审评中心—重点功能介绍
  15. 1.5.33 计算分数加减表达式的值
  16. ansible playbook详细教程(笔记)
  17. Moto Z6 手机 联通GSM卡上网设置, 使用技巧及疑难问题解决
  18. Linux手机众筹1000万
  19. nginx 访问状态统计 访问控制 虚拟主机
  20. 如何高效学习-随意信息处理-信息的记忆

热门文章

  1. 学习日报 1026 使用属性升级MyBank
  2. django-记住用户名-利用cookie-待演练
  3. win10 安装mysql-5.7.19-winx64
  4. 辨析ADKJVMJREJDKADT
  5. Linux下的tar压缩解压缩命令详解(转)
  6. Percona XtraDB cluster--第一部分:XtraDB cluster安装 (Centos7)
  7. 利用Android属性动画实现Banner的原理与实践
  8. OSGI-flex-blazeds通信
  9. Exchange 2007 删除 某时间段 特定主题 的邮件
  10. 收藏网站制作常用经典css.div.布局.设计实例打包下载