flutter 生成文档_Flutter文件操作

path_provider获取应用存储路径

path_provider是flutter提供的一个获取应用存储路径的插件,它封装了统一的api来获取Android和ios两个平台的应用存储路径,提供的api如下:getTemporaryDirectory():获取应用临时文件夹,该文件夹用来保存应用的缓存,可以随时删除用于清缓存,对应于Android的getCacheDir()和ios的NSTemporaryDirectory();

getApplicationDocumentsDirectory():获取应用安装路径,在应用被卸载的时候删除,对应Android的AppDate目录和iOS的NSDocumentDirectory目录;

getExternalStorageDirectory():获取存储卡目录,仅支持Android;

我们通过File和Directory来创建文件和文件夹时首先要获取到应用的相关路径,不然会报错;

File/Directory操作文件/文件夹

File对象和Directory对象封装在dart:io中,使用时需要先引入该库:

import 'dart:io';

创建文件/文件夹

// 创建一个文件夹

Directory tempDir = await getTemporaryDirectory();

Directory directory = new Directory('${tempDir.path}/test');

if (!directory.existsSync()) {

directory.createSync();

print('文档初始化成功,文件保存路径为 ${directory.path}');

}

// 创建一个文件

Directory tempDir = await getTemporaryDirectory();

File file = new File('${tempDir.path}/test.txt');

if (!file.existsSync()) {

file.createSync();

print('test.txt创建成功');

}

列出文件夹里的内容

Directory对象提供listSync()方法获取文件夹里的内容,该方法返回一个数组;

// 打印出test文件夹下文件的路径

Directory tempDir = await getTemporaryDirectory();

Directory directory = new Directory('${tempDir.path}/test');

directory.listSync().forEach((file) {

print(file.path);

});

删除文件/文件夹

文件和文件夹都通过delete删除,delete异步,deleteSync同步;如果一个文件夹是非空的删除会报错,删除非空文件夹需要先清空该文件夹:

Directory directory = new Directory(path);

if (directory.existsSync()) {

List files = directory.listSync();

if (files.length > 0) {

files.forEach((file) {

file.deleteSync();

});

}

directory.deleteSync();

}

读取/写入文件

File file = new File('${cache}/test.txt');

// 读物文件内容

String content = file.readAsString();

print(content);

// 写入文件

file.writeAsString('文件内容');

json文件读写

flutter对json序列化需要引入 dart:convert 库:

import 'dart:convert' as convert;

通过jsonEncode/jsonDecode来转换json对象:

var json = {

'name': 'xiaoming',

'age': 22,

'address': 'hangzhou'

}

File jsonFile = new File('$cahce/test.json');

// json文件写入

jsonFile.writeAsString(convert.jsonEncode(json));

// json文件读取

var jsonStr = await jsonFile.readAsString();

var json = convert.jsonDecode(jsonStr);

print(json['name']); // xiaoming

print(json['age']); // 22

print(json['address']); // hangzhou

文件的拷贝

// 将test目录下的info.json复制到test2目录下的info2.json中

File info1 = new File('$cache/test/info.json');

info1.copySync('$cache/test2/info2.json');

archive插件压缩文件

引入包archive包:

import 'package:archive/archive.dart';

import 'package:archive/archive_io.dart';

压缩:

var encode = ZipFileEncoder();

encode.zipDirectory(path, filename: path + '.zip');

encode.close();

压缩前使用ZipFileEncoder先声明处理压缩的对象,调用该对象的zipDirectory方法压缩文件,该方法接受两个参数,第一个是要压缩文件/文件夹的路径,第二个是压缩包的保存路径;

解压:

List bytes = File('test.zip').readAsBytesSync();

Archive archive = ZipDecoder().decodeBytes(bytes);

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/571558.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

java难学还是pythonnanxue_关于python:为什么numpy中的“ NaN”比“ -np.inf”更小?

在涉及np.min或np.argmin的任何比较中,认为NaN小于-np.inf的原因是什么?import numpy as npIn [73]: m np.array([np.nan, 1., 0., -np.inf])In [74]: n np.array([-np.inf, 1., 0., np.nan])# Huh??In [75]: np.min(m)Out[75]: nanIn [76]: np.min(…

Centos7 Yum安装 PHP5.5,5.6,7.0

默认的版本太低了,手动安装有一些麻烦,想采用Yum安装的可以使用下面的方案: 1.检查当前安装的PHP包yum list installed | grep php如果有安装的PHP包,先删除他们yum remove php.x86_64 php-cli.x86_64 php-common.x86_64 php-gd.x…

fanuc机器人控制柜接线_fanuc机器人控制柜crma-15.16接线图(2)

资源描述:B-82725EN-2/05 CONNECTIONS - 149 - 4. PERIPHERAL DEVICE AND END EFFECTOR INTERFACES 4.3 INTERFACE FOR PERIPHERAL DEVICES 4.3.1 Connection between the Main board (CRMA15, CRMA16) and Peripheral Devices Peripheral device control interface…

sql 存储过程 盲注入_一次非常规 SQL 注入(informixsql)的利用过程

介绍一个客户正在寻找升级他们的思科 UCM 软件,并希望保证他们的实现是安全配置的。在评估期间,我们在 Cisco UCM 管理员门户中发现了一个经过身份验证的 SQL 注入问题。在大多数情况下,可以使用 SQLMap 或其他工具来自动发现问题。由于我们是…

自定义鼠标指针轨迹_win10鼠标自定义颜色,鼠标属性设置,这样就不眯眼了

电脑用多了,眼睛受不了,这时候就需要各种护眼模式,把画面放大,指针放大,来解决眼睛盯着电脑累的问题了,一不留神发现鼠标指针变大好处多多,下面设置一下win10系统鼠标指针大小、颜色都是默认设置…

mysql linux_linux下mysql下载安装

1、下载地址https://www.mysql.com/downloads/选择community server点击DOWLOAD选择版本,当前选择的5.6版本点击下载mysql-5.6.38-linux-glibc2.12-i686.tar.gz选择no thanks2、安装mysqltar -xvzf mysql-5.6.38-linux-glibc2.12-i686.tar.gzmv mysql-5.6.38-linux…

老男孩python课后作业_老男孩python基础知识练习题(一)中

20、字符串是否可迭代?如可以请使用for循环每一个元素?>>> name " aleX ">>> for i in name:... print(i)21、请代码实现:利用下划线将列表的每一个元素拼接成字符串,li [‘alex‘,‘eric‘,‘rain…

java代码生成器 快速开发平台 二次开发 外包项目利器 springmvc SSM后台框架源码...

A代码编辑器,在线模版编辑,仿开发工具编辑器,pdf在线预览,文件转换编码B 集成代码生成器 [正反双向](单表、主表、明细表、树形表,快速开发利器)快速表单构建器 freemaker模版技术 ,0个代码不用写&#xff…

php mysql搭建_PHP+MYSQL的搭建_MySQL

现在准备研究下微信的开发,所以要研究下PHP了,但对这个平台还是很陌生的,所以网上找了些资料并测试,现贴出来给大家参考。第一步:我们先下载【PHPStudy 2013】或者最新版本;下载地址: http://do…

python 精度损失_Python的浮点数损失精度问题

本篇讨论的现象可以从下面这段脚本体现出来:>>> x 0.0>>> for i in range(10):x 0.1print(x)0.10.20.300000000000000040.40.50.60.70.79999999999999990.89999999999999990.9999999999999999>>>即:为什么有几行的输出看起…

锐捷交换机实验案例:vlan间互访的配置与验证

组网需求: 1、如下图所示,某用户内网被划分为VLAN 10、VLAN 20、VLAN 30,以实现相互间的2 层隔离; 2、3 个VLAN 对应的IP 子网分别为192.168.10.0/24 、192.168.20.0/24 、192.168.30.0/24,3 个VLAN 通过3 层核心交换机…

mysql innodb隔离级别_浅析MySQL InnoDB的隔离级别

本文就将对上面这两个问题进行解答,分析事务的隔离级别以及相关锁机制。隔离性简介隔离性主要是指数据库系统提供一定的隔离机制,保证事务在不受外部并发操作影响的"独立"环境执行,意思就是多个事务并发执行时,一个事务…

sql 2008服务器内存一直居高不下_经验之谈:内存问题造成数据库性能异常怎么破?...

作者:罗贵林原文链接:https://mp.weixin.qq.com/s/2e5eKSoGlU9J4Rjq1zwLnw导读:在使用数据库的过程中,内存不足常常会引起数据库异常。但是内存不足,又会为数据库带来哪些具体的影响呢?本次,我们…

mybatis 打印SQL语句

方法一&#xff1a; 在mybatis-config.xml中配置加一个setting <?xml version"1.0" encoding"UTF-8"?> <!DOCTYPE configurationPUBLIC "-//mybatis.org//DTD Config 3.0//EN""http://mybatis.org/dtd/mybatis-3-config.dtd&quo…

mysql 字符串匹配函数_mysql 自定义函数 实现字符串匹配

先来一个截图&#xff1a;fSearch函数的第一个参数为单一字符串(即 没有特殊字符串隔开)fSearch函数的第一个参数非单一字符串多个字符串同样可以匹配。函数代码&#xff1a;DELIMITER $$Create function fSearch(targetStr VARCHAR(100),findStr VARCHAR(100)) RETURNS INTBEG…

stm32时钟树_先学STM8,还是学STM32?

有朋友问&#xff1a;我学习过51&#xff0c;接下来我是先学习STM8&#xff0c;还是STM32呢&#xff1f;物联网STM32入门 - 直播课程 - 创客学院​www.makeru.com.cn嵌入式开发直播课 - STM32 USART串口的应用 - 创客学院直播室​www.makeru.com.cn1、写在前面想要明白这个问题…

如何使用django显示一张图片

django显示图片对新手来说真的算是一个坑。。 这里记录下小白爬坑的历程。 首先&#xff0c;你需要一个可以运行的django服务器&#xff0c;能显示正常的html文本&#xff0c;无法显示图片 这是html的文本&#xff0c;可以显示文字&#xff0c;无法显示图片 <h1>An Image…

mysql创建时间字段6_mysql 时间字段介绍

mysql时间类型大概有5种&#xff0c;如下图1、创建数据库create table t1 (id int(11) NOT NULL AUTO_INCREMENT PRIMARY KEY,d1_data date,d2_time time,d3_datatime datetime,d4_year year,d5_timestamp TIMESTAMP);字符串方式插入INSERT INTO t1 (d1_data,d2_time,d3_datati…

python课设代码_python课程编程题汇总(上)

python编程题汇总众所周知&#xff0c;由于疫情的原因&#xff0c;大家都在上网课&#xff0c;我也不例外啦~用这个贴子来记录也和大家分享一下我们课上的编程讨论题中篇在此→python课程编程题汇总(中)下篇在此→python课程编程题汇总(下)1、货币转换编写货币转换程序描述&…

安装Python 3.6 在Ubuntu 16.04 LTS 版本

在ubuntu 16.04版本中&#xff0c;系统默认安装 了python 2.7和3.5版本&#xff0c;因为系统本身用到python的程序&#xff0c;删除默认的版本又担心系统有问题&#xff0c;那有没有办法同时在安装和使用python 3.6版本呢&#xff1f;下文将一起安装python 3.6并修改原系统的py…