Flutter path_provider的基本使用(读写文件)
在android和ios平台下应用程序读写文件的文件目录不一样,这时候就需要path_provider来处理。
path_provider插件访问临时目录、文档目录和外部存储目录。
添加依赖
dependencies:path_provider: ^2.1.5
获取目录
效果
I/flutter (30891): /data/user/0/cn.jn.first_flutter/cache
I/flutter (30891): 文档目录:/data/user/0/cn.jn.first_flutter/app_flutter
I/flutter (30891): 外部存储目录:/storage/emulated/0/Android/data/cn.jn.first_flutter/files
android 添加权限
<uses-permission android:name="android.permission.READ_EXTERNAL_STORAGE" /><uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE" />
代码
class MyState extends State {/// 获取临时目录void getTDir() {String dir = "";Future<Directory> temp = getTemporaryDirectory();temp.then((value) {dir = value.path;print(dir);});}/// 获取文档目录void getDDir() {String dir = "";Future<Directory> temp = getApplicationDocumentsDirectory();temp.then((value) {dir = value.path;print("文档目录:$dir");});}///获取外部存储目录 android使用void getEDir() {String? dir = "";Future<Directory?> temp = getExternalStorageDirectory();temp.then((value) {dir = value?.path;print("外部存储目录:$dir");});}Widget build(BuildContext context) {return Scaffold(appBar: AppBar(title: Text(""), centerTitle: true),body: Column(children: [OutlinedButton(onPressed: () {getTDir();},child: Text("获取临时目录"),),OutlinedButton(onPressed: () {getDDir();},child: Text("获取文档目录"),),OutlinedButton(onPressed: () {getEDir();},child: Text("获取外部存储目录"),),],),);}
}
创建目录
/// 在临时目录创建目录void createTDir(String dirName) {String dir = "";Future<Directory> temp = getTemporaryDirectory();temp.then((value) {dir = value.path;print(dir);Directory("$dir/$dirName").exists().then((value) {if (!value) {Directory("$dir/$dirName").create();} else {print("目录已存在");}});});}
删除目录
/// 在临时目录删除目录void delTDir(String dirName) {String dir = "";Future<Directory> temp = getTemporaryDirectory();temp.then((value) {dir = value.path;print(dir);Directory("$dir/$dirName").exists().then((value) {if (value) {Directory("$dir/$dirName").delete();print("目录已删除");} else {print("目录不存在");}});});}
获取指定目录下的内容
/// 在临时目录删除目录void getTDirList() {String dir = "";Future<Directory> temp = getTemporaryDirectory();temp.then((value) {dir = value.path;print(dir);Directory("$dir").list(recursive: true).listen((event) {paths.add(event.path);}).onDone(() {print(paths);},);});}