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<String> get _localPath async {
final _path = await getTemporaryDirectory();
return _path.path;
}
}

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

Future<File> get _localFile async {
final path = await _localPath;
return File('$path/counter.txt');
}

3.写入数据到文件内 
现在有了可以使用的File,直接就可以来读写数据了,因为我们使用了计数器,所以只需将证书储存为字符串格式,
使用“$counter”即可(解析成整数方法在下一步)

Future<File> writeCounter(counter) async {
final file = await _localFile; return file.writeAsString('$counter');
}

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

Future<int> 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<String> get _localPath async {
final _path = await getTemporaryDirectory();
return _path.path;
} Future<File> get _localFile async {
final path = await _localPath; return File('$path/counter.txt');
} Future<int> readCounter() async {
try {
final file = await _localFile; var contents = await file.readAsString(); return int.parse(contents);
} catch (e) {
return 0;
}
} Future<File> 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<OnePage> {
int _counter; @override
void initState() {
super.initState();
widget.storage.readCounter().then((value) {
setState(() => _counter = value);
});
} Future<File> _incrementCounter() async {
setState(() => _counter++);
return widget.storage.writeCounter(_counter);
} Future<File> _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: <Widget>[
FloatingActionButton(
onPressed: () => _incrementCounter(),
child: new Icon(Icons.add),
),
FloatingActionButton(
onPressed: () => _incrementCounterj(),
child: new Icon(Icons.title),
)
],
),
floatingActionButtonLocation: FloatingActionButtonLocation.centerDocked,
);
}
}

原文来自  ===>  Flutter教程网:http://www.flutterj.com/

flutter 如何实现文件读写(使用篇)的更多相关文章

  1. 第二篇:python基础之文件读写

    python基础之文件读写   python基础之文件读写 本节内容 os模块中文件以及目录的一些方法 文件的操作 目录的操作 1.os模块中文件以及目录的一些方法 python操作文件以及目录可以使 ...

  2. loadrunder脚本篇——文件读写操作

     函数说明 函数原型: size_t fwrite( const void *buffer, size_t size, size_t count, FILE *file_pointer ); 参数说明 ...

  3. Python基础(十六):文件读写,靠这一篇就够了!

    文件读写的流程 类比windows中手动操作txt文档,说明python中如何操作txt文件? 什么是文件的内存对象(文件句柄)? 演示怎么读取文件 ① 演示如下 f = open(r"D: ...

  4. Python之文件读写

    本节内容: I/O操作概述 文件读写实现原理与操作步骤 文件打开模式 Python文件操作步骤示例 Python文件读取相关方法 文件读写与字符编码 一.I/O操作概述 I/O在计算机中是指Input ...

  5. (转)linux文件读写的流程

    转自http://hi.baidu.com/_kouu/item/4e9db87580328244ef1e53d0 在<linux内核虚拟文件系统浅析>这篇文章中,我们看到文件是如何被打开 ...

  6. Linux高级编程--05.文件读写

    缓冲I/O和非缓冲I/O 文件读写主要牵涉到了如下五个操作:打开.关闭.读.写.定位.在Linux系统中,提供了两套API, 一套是C标准API:fopen.fclose.fread.fwrite.f ...

  7. f2fs源码分析之文件读写过程

    本篇包括三个部分:1)f2fs 文件表示方法: 2)NAT详细介绍:3)f2fs文件读写过程:4) 下面详细阐述f2fs读写的过程. 管理数据位置关键的数据结构是node,node包括三种:inode ...

  8. 通过文件读写方式实现Matlab和Modelsim的联合仿真

    虽然Modelsim的功能非常强大,仿真的波形可以以多种形式进行显示,但是当涉及到数字信号处理的算法的仿真验证的时候,则显得有点不足.而进行数字信号处理是Matlab的强项,不但有大量的关于数字信号处 ...

  9. 文件读写IO

    摘要:本文主要总结了以下有关文件读写的IO,系统调用与库函数. 1.初级IO函数:close,creat,lseek,open,write 文件描述符是一个整型数 1.1close 1.2int cr ...

随机推荐

  1. 开源 自由 java CMS - FreeCMS1.9 积分规则管理

    项目地址:http://www.freeteam.cn/ 积分规则管理 管理会员操作时积分处理规则. 1. 积分规则管理 从左側管理菜单点击积分规则进入. 2. 加入积分规则 在积分规则列表下方点击& ...

  2. WPF中的 Layout To Layout

    原文:WPF中的 Layout To Layout   WPF中的 Layout To Layout                             周银辉 WPF的布局功能异常强大,当有时我 ...

  3. iOS 往来--书面资料

    写接触知识和查询功能的基础,现在我们就来看看信息写入 新 变化 删除 #pragma mark - 系人信息 //创建联系人 - (void) creatNewRecord { CFErrorRef ...

  4. asp .net 大文件传输配置

    asp .net config配置 需要在配置文件里面设置文件上传限定的两个属性值:maxAllowedContentLength,maxRequestLength 允许上传文件的长度,和请求的长度, ...

  5. Linux技术学习路线图

  6. facebook javascript api 使用

    官方api文档:http://developers.facebook.com/docs 先简单的介绍下创建一个app(https://developers.facebook.com/apps),

  7. mingw64 构建 Geos

    简述 在做某个小程序时候用到了QT,而用的Qt是mingw版本的,所以使用mingw构建了一下geos库. 1.准备工作 首先需要先安装好mingw,这里直接使用http://www.mingw-w6 ...

  8. 龙芯GO!龙芯平台上构建Go语言环境指南

    龙芯软件生态系列——龙芯GO!龙芯平台上构建Go语言环境指南2016-07-05 龙芯中科1初识Go语言Go语言是Google公司于2009年正式推出的一款开源的编程语言,是由Robert Gries ...

  9. 年度调查 看看 2016 年 Go 语言调查结果

    Go 语言官方博客公布了 2016 年 Go 语言使用调查. 在 3,595 名被调查者中,89% 称他们在工作中或工作之外用 Go 编程:63% 称他们的工作是 Web 开发,但只有 9% 的人只从 ...

  10. DHTMLEdit控件的安装

    xp中自带了DHTMLEdit.ocx, 所以只需安装即可 但是可视化设计面板中没有这个控件,需要我们手动安装一下 具体方式: [import AcitveX control  在控件板上的安装]一. ...