美文网首页Flutter
flutter path_provider操作

flutter path_provider操作

作者: 流星阁 | 来源:发表于2021-11-24 17:43 被阅读0次

本次主要实现文件/文件夹的创建、删除、写入、读取具体代码如下:

1.在pubsec.ymal引入"path_provider: ^2.0.7"

path_provider: ^2.0.7

2.废话不多说,直接上代码(注意同步异步问题即可)

import 'package:flutter/cupertino.dart';
import 'package:path_provider/path_provider.dart';
import 'dart:io';

class Fileutil {
  static Fileutil shared = Fileutil._instance();
  Fileutil._instance();
   ///getExternalStorageDirectory():获取存储卡目录,仅支持Android;
  /// 找到正确的本地路径
  /// getApplicationDocumentsDirectory 类似iOS的NSDocumentDirectory和Android上的AppData目录
  get localDocPath async {
    final directory = await getApplicationDocumentsDirectory();
    return directory.path;
  }

  /// getTemporaryDirectory 类似iOS的NSTemporaryDirectory和Android的getCacheDir
  get localTempPath async {
    final directory = await getTemporaryDirectory();
    return directory.path;
  }

  ///创建文件夹
 setFileFolder(String path) async{
    Directory directory = new Directory('$path');
    if (!directory.existsSync()) {
      directory.createSync();
      debugPrint('文件夹初始化成功,文件保存路径为 ${directory.path}');
    } else {
      debugPrint('文件夹已存在');
    }
    return directory.path;
  }

  ///创建文件
  setFile(String path) {
    File file = new File('$path');
    if (!file.existsSync()) {
      file.createSync();
      debugPrint('创建成功');
    } else {
      debugPrint('文件已存在');
    }
    return file;
  }

  /// 将数据写入文件
  void writeCounter(String path, String content) async{
    // Write the file
    File file = await setFile(path);
    try {
      file.writeAsStringSync('$content');
      debugPrint('文件写入成功');
    } catch (e) {
      debugPrint('文件写入失败');
    }
  }

  /// 从文件中读取数据
  readCounter(String path) async {
    File file = await setFile(path);
    try {
      // Read the file
      String contents = file.readAsStringSync();
      debugPrint('文件读取成功:$contents');
      return contents;
    } catch (e) {
      debugPrint('文件读取失败');
      return '';
    }
  }

  ///文件/文件夹删除
  deleteFilefloder(String path) {
    Directory directory = new Directory(path);
    if (directory.existsSync()) {
      List<FileSystemEntity> files = directory.listSync();
      if (files.length > 0) {
        files.forEach((file) {
        file.deleteSync();
        });
      }
      directory.deleteSync();
      debugPrint('文件夹删除成功');
    }
  }

  ///删除文件
  deleteFile(String path) {
    File file = new File('$path');
    if (file.existsSync()) {
      try {
        file.deleteSync();
        debugPrint('文件删除成功');
      } catch (e){
        debugPrint('文件删除失败');
      }
    }
  }

  ///遍历所有文件
  getAllSubFile(String path) async{
    Directory directory = new Directory(path);
    if (directory.existsSync()) {
      return directory.listSync();
    }
    return [];
  }
}

相关文章

网友评论

    本文标题:flutter path_provider操作

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