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文件操作相关推荐

  1. flutter 生成文档_flutter 如何实现文件读写(使用篇)

    flutter文件读写可以对磁盘文件进行操作,实现某些业务场景,那么我们开始来讲下这个文件读写操作. 使用的库插件(package) dart:io(用于数据处理) path_provider (用于 ...

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

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

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

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

  4. docwizard c++程序文档自动生成工具_如何开发一个基于 TypeScript 的工具库并自动生成文档

    为什么用 TypeScript? TypeScript is a typed superset of JavaScript that compiles to plain JavaScript. Any ...

  5. 使用DocFx生成文档网站并将其发布到GitHub Pages

    目录 介绍 DocFx安装 Visual Studio中的测试解决方案 使用docfx init设置DocFx 手动设置DocFx docfx.json配置文件的剖析 元数据部分 构建部分 docs文 ...

  6. WebApi实现验证授权Token,WebApi生成文档等 - CSDN博客

    原文:WebApi实现验证授权Token,WebApi生成文档等 - CSDN博客 [csharp] view plain copy print? using System; using System ...

  7. newlisp 注释生成文档

    最近写了一个newlisp_armory库,用来实现一些newlisp自身不支持的操作.比如跨windows和ubuntu的目录拷贝功能等. 自己用的时候,发现没有API reference文档参考, ...

  8. IDEA 版 API 接口神器来了,一键生成文档,嘎嘎香!

    先看效果,这个文档就是通过该 IDEA 插件自动生成的,你能相信吗? 文档链接:https://petstore.apifox.cn 每个开发都不想写文档.当你不想写接口文档时,可以通过安装插件在 I ...

  9. java怎样生成文档_关于如何生成Java文档

    一.生成Java文档,要明白Java注释内容,如果不知道,可以去看上一篇文章. 二.Java系统提供的javadoc工具可以根据程序结构自动生成注释文档.当程序修改时可方便及时更新生成的注释文档.ja ...

最新文章

  1. 网易有道词典笔 —— 73 岁“人类高质量”奶奶梅耶马斯克的中文学习之选
  2. html中用来标记关键字的标识,简单的HTML标识属性与识别
  3. leetcode算法题--仅仅反转字母
  4. Nodejs读写文件
  5. 程序员 面试笔记 C++ 程序设计的基础 第10章
  6. 当Java遇上机密计算,又一段奇幻之旅开始了!
  7. IDEA编辑器多行编辑模式
  8. centos7源码安装mysql8.0_CentOS7下源码安装MySQL 8.x
  9. SpingMVC Model 和ModelAndView,以及从参数的设置和接收
  10. 神奇的go语言(面向对象)
  11. linux关闭rpcbind服务,rpcbind服务 关闭
  12. 红外测试操作步骤_红外分光测油仪操作步骤及注意事项
  13. 易语言手动和代码创建数据库
  14. vivos7和vivo6有什么区别(主要看配置参数对比)
  15. idea工具首次提交代码到git上
  16. 耶耶!我进了全国网络管理员前50了
  17. Global Tracking Transformers
  18. HTTP Status 500 - Servlet.init() for servlet DispatcherServlet threw exception
  19. 抖音创意拍摄玩法让你轻松上热门,抖音分身特效教程。
  20. 【转载】人工智能发展简史

热门文章

  1. HTML+CSS+JS实现 ❤️翻页倒计时ui特效❤️
  2. 《springcloud超级入门》微服务的概念和优缺点《一》
  3. Git使用手册--超级详细,自己都看哭了
  4. java note项目_Java Request.setNote方法代码示例
  5. java 向上舍入_介绍Java的大数类(BigDecimal)和八种舍入模式
  6. 2014北科计算机原理试题答案,北科_计算机组成原理考题-A卷答案
  7. android 页面整体滑动,ScrollView 实现页面整体滑动
  8. php 写一个大富翁游戏,C++大富翁代码 现在要设计一个类似“大富翁”的游戏:有一条由20个格子组成的 联合开发网 - pudn.com...
  9. Java 解析URL
  10. php文件夹重命名,PHP重命名和移动目录