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);
flutter 生成文档_Flutter文件操作相关推荐
- flutter 生成文档_flutter 如何实现文件读写(使用篇)
flutter文件读写可以对磁盘文件进行操作,实现某些业务场景,那么我们开始来讲下这个文件读写操作. 使用的库插件(package) dart:io(用于数据处理) path_provider (用于 ...
- oracle导出pdm文件命令,利用PowerDesigner逆向工程导出PDM模型及生成文档
最近需要对老项目进行重构优化,由于项目都是好几年前的,相关设计资料很不全,最基本的数据库设计文档都没有,只能利用PowerDesigner逆向工程导出PDM模型及生成word文档:以下简单介绍导出模型 ...
- showdoc如何创建文件夹_showDoc生成文档
1. 创建项目 2. 获取api_key和api_token 1. 打开设置 2. 获取api_key和token 3. 生成文档 1. 先cd进入你的项目目录,命令行模式下输入: wget http ...
- docwizard c++程序文档自动生成工具_如何开发一个基于 TypeScript 的工具库并自动生成文档
为什么用 TypeScript? TypeScript is a typed superset of JavaScript that compiles to plain JavaScript. Any ...
- 使用DocFx生成文档网站并将其发布到GitHub Pages
目录 介绍 DocFx安装 Visual Studio中的测试解决方案 使用docfx init设置DocFx 手动设置DocFx docfx.json配置文件的剖析 元数据部分 构建部分 docs文 ...
- WebApi实现验证授权Token,WebApi生成文档等 - CSDN博客
原文:WebApi实现验证授权Token,WebApi生成文档等 - CSDN博客 [csharp] view plain copy print? using System; using System ...
- newlisp 注释生成文档
最近写了一个newlisp_armory库,用来实现一些newlisp自身不支持的操作.比如跨windows和ubuntu的目录拷贝功能等. 自己用的时候,发现没有API reference文档参考, ...
- IDEA 版 API 接口神器来了,一键生成文档,嘎嘎香!
先看效果,这个文档就是通过该 IDEA 插件自动生成的,你能相信吗? 文档链接:https://petstore.apifox.cn 每个开发都不想写文档.当你不想写接口文档时,可以通过安装插件在 I ...
- java怎样生成文档_关于如何生成Java文档
一.生成Java文档,要明白Java注释内容,如果不知道,可以去看上一篇文章. 二.Java系统提供的javadoc工具可以根据程序结构自动生成注释文档.当程序修改时可方便及时更新生成的注释文档.ja ...
最新文章
- 网易有道词典笔 —— 73 岁“人类高质量”奶奶梅耶马斯克的中文学习之选
- html中用来标记关键字的标识,简单的HTML标识属性与识别
- leetcode算法题--仅仅反转字母
- Nodejs读写文件
- 程序员 面试笔记 C++ 程序设计的基础 第10章
- 当Java遇上机密计算,又一段奇幻之旅开始了!
- IDEA编辑器多行编辑模式
- centos7源码安装mysql8.0_CentOS7下源码安装MySQL 8.x
- SpingMVC Model 和ModelAndView,以及从参数的设置和接收
- 神奇的go语言(面向对象)
- linux关闭rpcbind服务,rpcbind服务 关闭
- 红外测试操作步骤_红外分光测油仪操作步骤及注意事项
- 易语言手动和代码创建数据库
- vivos7和vivo6有什么区别(主要看配置参数对比)
- idea工具首次提交代码到git上
- 耶耶!我进了全国网络管理员前50了
- Global Tracking Transformers
- HTTP Status 500 - Servlet.init() for servlet DispatcherServlet threw exception
- 抖音创意拍摄玩法让你轻松上热门,抖音分身特效教程。
- 【转载】人工智能发展简史
热门文章
- HTML+CSS+JS实现 ❤️翻页倒计时ui特效❤️
- 《springcloud超级入门》微服务的概念和优缺点《一》
- Git使用手册--超级详细,自己都看哭了
- java note项目_Java Request.setNote方法代码示例
- java 向上舍入_介绍Java的大数类(BigDecimal)和八种舍入模式
- 2014北科计算机原理试题答案,北科_计算机组成原理考题-A卷答案
- android 页面整体滑动,ScrollView 实现页面整体滑动
- php 写一个大富翁游戏,C++大富翁代码 现在要设计一个类似“大富翁”的游戏:有一条由20个格子组成的 联合开发网 - pudn.com...
- Java 解析URL
- php文件夹重命名,PHP重命名和移动目录