美文网首页Flutter
Flutter 文件路径

Flutter 文件路径

作者: 春眠不觉晓光 | 来源:发表于2020-04-20 11:27 被阅读0次

此文档并非原著,照搬知乎:
https://zhuanlan.zhihu.com/p/90071559


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<FileSystemEntity> 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<int> bytes = File('test.zip').readAsBytesSync();

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

相关文章

  • Flutter 文件路径

    此文档并非原著,照搬知乎:https://zhuanlan.zhihu.com/p/90071559 path_p...

  • Mac本地Flutter版本切换

    Flutter 路径指定 .bash_profile文件配置 Flutter 版本切换方式 1.命令切换版本(速度...

  • flutter WebView:Mixed Content: T

    需要修改源文件 找到插件路径: webview_flutter-2.0.13\android\src\main\j...

  • flutter入门

    以下教程以mac配置为主 1、sdk获取() 2、国内需要设置镜像 3、路径配置(此路径为自己flutter文件夹...

  • Android Studio Flutter Hot Reloa

    flutter在AS中拖动文件变更位置导致热加载无效,通过找原因,发现引入路径问题,只需要把引入路径由:impor...

  • Flutter SDK路径改变后报错

    Flutter SDK路径改变后报错 删掉工程目录下的.packages文件,然后重新get package. 如...

  • 发布Android版APP

    发布Android版APP 注意main.dart文件名字和路径都不要改变,最后执行flutter build a...

  • Flutter —— 国际化(arb文件)

    安装Flutter Intel插件 使用方式 初始化使用后会生成如下两个文件路径 编辑i10文件按照json文件编...

  • Flutter 错误小记

    一、Process 'command '/路径/flutter/bin/flutter'' finished wi...

  • flutter集成到原生框架

    已经安装flutter的情况下 1、到你flutter的路径下面 我自己的路径 cd ~/development...

网友评论

    本文标题:Flutter 文件路径

    本文链接:https://www.haomeiwen.com/subject/yurrihtx.html