package:path_provider

一个能使用本地文件系统的插件,比如获取缓存区域文件夹等。
支持全平台,但是部分功能针对于不同的平台有限制

  • 读取文件
  • 或者文件地址等

功能:

功能:
1.读取文件
2. 或者文件地址等
|Directory |Android | iOS | Linux |macOS |Windows |
Temporary ✔️ ✔️ ✔️ ✔️ ✔️
Application Support ✔️ ✔️ ✔️ ✔️ ✔️
Application Library ❌️ ✔️ ❌️ ✔️ ❌️
Application Documents ✔️ ✔️ ✔️ ✔️ ✔️
External Storage ✔️ ❌ ❌ ❌️ ❌️
External Cache Directories ✔️ ❌ ❌ ❌️ ❌️
External Storage Directories ✔️ ❌ ❌ ❌️ ❌️
Downloads ❌ ❌ ✔️ ✔️ ✔️

使用实例和代码:

 Future<String> _getTemporaryDirectory() async {final dir = await getTemporaryDirectory();return dir.toString();}
 Future<String> _getApplicationSupportDirectory() async {final dir = await getApplicationSupportDirectory();return dir.toString();}
 Future<String> _getLibraryDirectory() async {final dir = await getLibraryDirectory();return dir.toString();}
Future<String> _getApplicationDocumentsDirectory() async {final dir = await getApplicationDocumentsDirectory();return dir.toString();
}
 Future<String> _getExternalStorageDirectory() async {final dir = await getExternalStorageDirectory();return dir.toString();}
 Future<String> _getExternalCacheDirectories() async {final dir = await getExternalCacheDirectories();return dir.toString();}Future<String> _getDownloadsDirectory() async {final dir = await getDownloadsDirectory();return dir.toString();}

获取DocumentsDirectory文件的具体地址,并插件一个txt文件

 /*读写磁盘的操作**///获取到文件Future<File> getFile(String str) async {final dir = await getApplicationDocumentsDirectory();debugPrint('$dir'.toString());String filepath = "${dir.path}\\${str}.txt";debugPrint("filepath $filepath");// Directory newdirectory = Directory(filepath);//文件夹也可以创建File file = File(filepath);if (!file.existsSync()) {//判断是否存在文件,如果不存在就创建他,异步创建file.createSync();debugPrint('create success');}return File(filepath);}

读取文件并写入,mode: FileMode.append不覆盖

 Future<void> dowritestr(String str) async {final file = await getFile("test");//append 不覆盖添加file.writeAsStringSync('JACK', mode: FileMode.append);file.writeAsStringSync('TOm', mode: FileMode.append);debugPrint('success');}

获取文件并读取

 Future<String> doread(String str) async {final file = await getFile("test");//append 不覆盖添加debugPrint('success');return file.readAsString();}

代码:

// Copyright 2013 The Flutter Authors. All rights reserved.
// Use of this source code is governed by a BSD-style license that can be
// found in the LICENSE file.// ignore_for_file: public_member_api_docsimport 'dart:io';import 'package:flutter/material.dart';
import 'package:path_provider/path_provider.dart';void main() {runApp(const MyApp());
}class MyApp extends StatelessWidget {const MyApp({Key? key}) : super(key: key);@overrideWidget build(BuildContext context) {return MaterialApp(title: 'Path Provider',theme: ThemeData(primarySwatch: Colors.blue,),home: const MyHomePage(title: 'Path Provider'),);}
}class MyHomePage extends StatefulWidget {const MyHomePage({Key? key, required this.title}) : super(key: key);final String title;@overrideState<MyHomePage> createState() => _MyHomePageState();
}class _MyHomePageState extends State<MyHomePage> {String addstr = '这边显示文档的位置';Future<String> _getTemporaryDirectory() async {final dir = await getTemporaryDirectory();return dir.toString();}Future<String> _getApplicationSupportDirectory() async {final dir = await getApplicationSupportDirectory();return dir.toString();}Future<String> _getLibraryDirectory() async {final dir = await getLibraryDirectory();return dir.toString();}Future<String> _getApplicationDocumentsDirectory() async {final dir = await getApplicationDocumentsDirectory();return dir.toString();}Future<String> _getExternalStorageDirectory() async {final dir = await getExternalStorageDirectory();return dir.toString();}Future<String> _getExternalCacheDirectories() async {final dir = await getExternalCacheDirectories();return dir.toString();}Future<String> _getDownloadsDirectory() async {final dir = await getDownloadsDirectory();return dir.toString();}/*读写磁盘的操作**///获取到文件Future<File> getFile(String str) async {final dir = await getApplicationDocumentsDirectory();debugPrint('$dir'.toString());String filepath = "${dir.path}\\${str}.txt";debugPrint("filepath $filepath");// Directory newdirectory = Directory(filepath);//文件夹也可以创建File file = File(filepath);if (!file.existsSync()) {//判断是否存在文件,如果不存在就创建他,异步创建file.createSync();debugPrint('create success');}return File(filepath);}Future<void> dowritestr(String str) async {final file = await getFile("test");//append 不覆盖添加file.writeAsStringSync('JACK', mode: FileMode.append);file.writeAsStringSync('TOm', mode: FileMode.append);debugPrint('success');}Future<String> doread(String str) async {final file = await getFile("test");//append 不覆盖添加debugPrint('success');return file.readAsString();}@overrideWidget build(BuildContext context) {return Scaffold(appBar: AppBar(title: Text(widget.title),),body: Center(child: ListView(padding: EdgeInsets.all(10),children: [Center(child: Text(addstr)),Container(margin: EdgeInsets.all(10),child: ElevatedButton(onPressed: () async {String newadd = await _getTemporaryDirectory();setState(() {addstr = newadd;});},child: const Text('获取应用临时目录(全平台支持)getTemporaryDirectory')),),Container(margin: EdgeInsets.all(10),child: ElevatedButton(onPressed: () async {String newadd = await _getApplicationSupportDirectory();setState(() {addstr = newadd;});},child: const Text('获取应用程序支持目录(全平台支持)getApplicationSupportDirectory')),),Container(margin: EdgeInsets.all(10),child: ElevatedButton(onPressed: () async {if (Platform.isMacOS || Platform.isMacOS) {String newadd = await _getLibraryDirectory();addstr = newadd;} else {String newadd = '不支持';addstr = newadd;}setState(() {});},child: const Text('获取程序持久文件目录(ios macos)getLibraryDirectory')),),Container(margin: EdgeInsets.all(10),child: ElevatedButton(onPressed: () async {String newadd = await _getApplicationDocumentsDirectory();addstr = newadd;setState(() {});},child: const Text('获取应用文档目录(全平台)getApplicationDocumentsDirectory')),),Container(margin: EdgeInsets.all(10),child: ElevatedButton(onPressed: () async {if (Platform.isAndroid) {String newadd = await _getExternalStorageDirectory();addstr = newadd;} else {String newadd = '不支持';addstr = newadd;}setState(() {});},child: const Text('获取外部存储目录(only android)getExternalStorageDirectory')),),Container(margin: EdgeInsets.all(10),child: ElevatedButton(onPressed: () async {if (Platform.isAndroid) {String newadd = await _getExternalCacheDirectories();addstr = newadd;} else {String newadd = '不支持';addstr = newadd;}setState(() {});},child: const Text('获取外部缓存目录(only android)getExternalCacheDirectories')),),Container(margin: EdgeInsets.all(10),child: ElevatedButton(onPressed: () async {if (Platform.isAndroid) {String newadd = await _getExternalStorageDirectory();addstr = newadd;} else {String newadd = '不支持';addstr = newadd;}setState(() {});},child: const Text('外部存储目录(单独分区)(only android)getExternalStorageDirectory')),),Container(margin: EdgeInsets.all(10),child: ElevatedButton(onPressed: () async {if (Platform.isLinux ||Platform.isMacOS ||Platform.isWindows) {String newadd = await _getDownloadsDirectory();addstr = newadd;} else {String newadd = '不支持';addstr = newadd;}setState(() {});},child: const Text('获取下载文件存储目录地址(only Linux,MacOS,Windows)getDownloadsDirectory')),),Container(margin: EdgeInsets.all(10),child: ElevatedButton(onPressed: () async {dowritestr('TEST');},child: const Text('写入数据的操作')),),Container(margin: EdgeInsets.all(10),child: ElevatedButton(onPressed: () async {String retxt = await doread('TEST');setState(() {addstr = retxt;});},child: const Text('读取数据')),),],)),);}
}

截图:

【Flutter】【path_provider】path_provider文件系统相关推荐

  1. flutter 推荐插件:path_provider

    flutter 推荐插件:path_provider path_provider是一个Flutter插件,用于获取主机平台文件系统上常用的位置,如temp和app数据目录. 作者: jcLee95 邮 ...

  2. 【Flutter】Image 组件 ( 加载网络图片 | 加载静态图片 | 加载本地图片 | path_provider 插件 )

    文章目录 一.加载网络图片 二.加载静态图片 三.加载本地图片 四.完整代码示例 五.相关资源 一.加载网络图片 参考 [Flutter]Image 组件 ( Image 组件简介 | Image 构 ...

  3. etw系统provider事件较多_【Flutter 实战】文件系统目录

    老孟导读:Flutter 中获取文件路径,我们都知道使用 path_provider,但对其目录对含义不是很清楚,此文介绍 Android.iOS 系统的文件目录,不同场景下建议使用的目录. 不同的平 ...

  4. Flutter进阶—读取与写入文件

    Flutter使用path_provider插件读取与写入文件,path_provider插件提供了一种平台无关的方法来访问设备文件系统上常用的位置.该类目前支持访问两个文件系统位置: 临时目录:系统 ...

  5. Flutter学习之事件循环机制、数据库、网络请求

    一.前言 学习了布局实例和交互后,算是对Flutter入门了,基本可以实现一些普通页面搭建和交互效果了.但是这远远还不够,现在App都是需要网络访问的,而今天的目标就是学习IO和网络这一块. 二.Da ...

  6. TensorFlow Lite,ML Kit 和 Flutter 移动深度学习:1~5

    原文:Mobile Deep Learning with TensorFlow Lite, ML Kit and Flutter 协议:CC BY-NC-SA 4.0 译者:飞龙 本文来自[Apach ...

  7. Flutter开发之——文件系统目录pathprovider

    一 概述 不同的平台对应的文件系统是不同的,比如文件路径,因此 Flutter 中获取文件路径需要原生支持 通过Google 官方提供的插件 path_provider,可以实现跨平台下文件的路径 二 ...

  8. flutter 显示缓存大小,清理缓存功能

    Flutter 获取应用缓存需要借助于path_provider插件. path_provider 是一个用于查找文件系统上常用位置的Flutter插件.用来获取 Android 和 iOS 的缓存文 ...

  9. Flutter 全平台 sqlite/sqlcipher orm 框架 drift(原moor)的使用

    前言 Flutter 目前比较好用的 sqlite 数据库 orm 框架就是drift (以前叫作moor),由于dart语言不支持反射,这个框架使用了dart代码生成器,自动生成代码.这个数据库框架 ...

最新文章

  1. C++11中头文件chrono的使用
  2. 在线网上打字系统_在线网上打字比赛软件_打字练习_中英文打字系统
  3. 后端开发必知必学的 Linux 命令行大全
  4. Linux上安装JDK+Tomcat
  5. 往java里输入坐标值_java.让用户输入x坐标,和y坐标。当用户输入完x坐标(比如200),敲enter,...
  6. 吴恩达深度学习4.2练习_Convolutional Neural Networks_Residual Networks
  7. selenium webdriver (6) -- iFrame
  8. 智能车改舵机中值步骤_智能车制作全过程(飞思卡尔---舵机篇)
  9. QuickEdit-手机端强大的代码编辑器
  10. 多标签分类问题中的评价指标:准确率,交叉熵代价函数
  11. 计算机 取得高级权限,win10获取system权限,win7获取最高权限
  12. JAVA 调用 labview_制作软接入点ESP8266并通过labview读取数据
  13. Linux man命令使用
  14. C语言中格式化字符串
  15. spyder设置显示编码_OBS编码器选择“硬件(NVENC)”导致无法录屏解决办法
  16. 高等数学期末总复习DATY9.积分上限函数、基本定积分计算、定积分换元法、定积分的分部积分、三角函数的N次方积分、反常积分(广义积分)
  17. 百度地图搜索poi、point、address
  18. GS1011无线模块的使用简介。
  19. zte d90 java_电信天翼 畅享3G--ZTE D90+初用体验
  20. 设计模式之禅之开闭原则

热门文章

  1. ubuntu18.04 network有线网络图标缺失解决记录
  2. php正则表达式(手册)
  3. 记一次too many open files 异常
  4. 玩游戏提升计算机内存不足,电脑内存不足怎么办?详细解决方案.
  5. EventTarget介绍
  6. ubuntu搜狗输入法中文无法切换英文
  7. ssh-agent与ssh-sshd,开启ssh服务
  8. 【媒体报道】2013eoe移动开发者大会圆满落幕
  9. 使用ZAP寻找敏感文件和目录
  10. Atcoder abc A~E