TreeviewCopyright © aleen42 all right reserved, powered by aleen42

添加包

在 Flutter 中进行文件读写需要添加 dart:iopath_provider 这两个包

获取路径

在 Flutter 中,同样也是存在着两个目录:

  • 一个是缓存目录,在 Android 上对应的 getCacheDir() 的返回值,在 iOS 上对应 NSCachesDirectory 的返回值。该目录可以随时被删除。
  • 一个是只能应用本身访问的目录,在 iOS 上,这个目录对应于 NSDocumentDirectory。在 Android 上,则是 AppData 目录。该目录只有在 APP 被删除时才会被清空。

那么如何获取这两个路径呢?

缓存目录

getExternalCacheDirectories() 方法可以获取到缓存目录,它的返回值是一个 Future<List<Directory>>

应用目录

getApplicationDocumentsDirectory() 方法可以获取到应用目录,它的返回值是一个 Future<Directory>

写入文件

写入文件需要 dart:io 库的 File 类来实现:

///应用目录写入
  Future<String> writeFile() async {
    var directory = await getApplicationDocumentsDirectory();
    var path = directory.path;
    File file = File("$path/test.txt");
    file.writeAsString("这是要插入的字符串");
    return "插入成功";
  }
///缓存目录写入
  Future<String> writeFile() async {
    var cache = await getExternalCacheDirectories();
    var cachePath =  cache[0].path;
    File file = File("$cachePath/cache.txt");
    file.writeAsString("这是要插入的字符串");
    return "插入成功";
  }

读取文件

同样需要 dart:io 库的 File 类来实现:

///读取缓存目录
  Future<String> readFile() async {
    final directory= await getApplicationDocumentsDirectory();
    var cache = await getExternalCacheDirectories();
    String cachePath = cache[0].path;
    File file =  File("$cachePath/cache.txt");
    return file.readAsString();
  }
///读取应用目录
  Future<String> readFile() async {
    final directory = await getApplicationDocumentsDirectory();
    String path = directory.path;
    File file = File("$path/test.txt");
    return file.readAsString();
  }

删除文件

调用 File 的 delete 方法,不赘述。

results matching ""

    No results matching ""