IT数码 购物 网址 头条 软件 日历 阅读 图书馆
TxT小说阅读器
↓语音阅读,小说下载,古典文学↓
图片批量下载器
↓批量下载图片,美女图库↓
图片自动播放器
↓图片自动播放器↓
一键清除垃圾
↓轻轻一点,清除系统垃圾↓
开发: C++知识库 Java知识库 JavaScript Python PHP知识库 人工智能 区块链 大数据 移动开发 嵌入式 开发工具 数据结构与算法 开发测试 游戏开发 网络协议 系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程
数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁
 
   -> 移动开发 -> 【Flutter】【path_provider】path_provider文件系统 -> 正文阅读

[移动开发]【Flutter】【path_provider】path_provider文件系统

在这里插入图片描述

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_docs

import '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);

  @override
  Widget 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;

  @override
  State<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();
  }

  @override
  Widget 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('读取数据')),
          ),
        ],
      )),
    );
  }
}


截图:

在这里插入图片描述

  移动开发 最新文章
Vue3装载axios和element-ui
android adb cmd
【xcode】Xcode常用快捷键与技巧
Android开发中的线程池使用
Java 和 Android 的 Base64
Android 测试文字编码格式
微信小程序支付
安卓权限记录
知乎之自动养号
【Android Jetpack】DataStore
上一篇文章           查看所有文章
加:2022-09-30 01:04:20  更:2022-09-30 01:07:37 
 
开发: C++知识库 Java知识库 JavaScript Python PHP知识库 人工智能 区块链 大数据 移动开发 嵌入式 开发工具 数据结构与算法 开发测试 游戏开发 网络协议 系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程
数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁

360图书馆 购物 三丰科技 阅读网 日历 万年历 2024年3日历 -2024/3/29 18:46:43-

图片自动播放器
↓图片自动播放器↓
TxT小说阅读器
↓语音阅读,小说下载,古典文学↓
一键清除垃圾
↓轻轻一点,清除系统垃圾↓
图片批量下载器
↓批量下载图片,美女图库↓
  网站联系: qq:121756557 email:121756557@qq.com  IT数码