0
点赞
收藏
分享

微信扫一扫

Flutter笔记: 在Flutter中的操作文件

一、介绍

文件是存储在磁盘上的数据的集合,可以包含任何类型的数据,如文本、图片、音频等。文件是计算机中用于数据存储的基本单位,它可以包含各种类型的数据,如程序代码、文本文档、图片、音频和视频等。

在 Dart 中,我们可以使用 dart:io 库中的 File 类来操作文件

二、文件(File)

以下是一个简单的示例,演示如何使用 File 类来创建一个新文件,并向其中写入一些文本

void demo1() async {
    var file = File('test.txt');
    try {
      await file.writeAsString('Hello, Dart!');
    } catch (e) {
      print('Error: $e');
    }
  }

2.1 创建文件

使用 create 方法可以创建一个新的文件。如果文件已经存在,create 方法不会有任何效果。如果你希望覆盖已经存在的文件,可以给 create 方法传入一个名为 recursive 的参数,将其设为 true。

void demo2() async {
    var file = File('test.txt');
    try {
      await file.create(recursive: true);
    } catch (e) {
      print('Error: $e');
    }
  }

2.2 读取文件

使用 readAsString 方法可以读取文件的内容,返回一个字符串。如果文件不存在,readAsString 方法会抛出一个异常

void demo3() async {
    var file = File('test.txt');
    try{
      String contents = await file.readAsString();
      print(contents);
    }catch(e){
      print('文件不存在: $e');
    }
  }

2.3 写入文件

使用 writeAsString 方法可以向文件中写入字符串。如果文件不存在,writeAsString 方法会创建一个新的文件。如果文件已经存在,writeAsString 方法会覆盖文件的内容。

void demo4() async {
    var file = File('test.txt');
    File? fileCached;
    try {
      fileCached = await file.writeAsString('Hello, Dart!');
    } catch (e) {
      print(e);
    }
    print('fileCached: $fileCached');
  }



2.4 删除文件

使用 delete 方法可以删除一个文件。如果文件不存在,delete 方法不会有任何效果。


void demo5() async {

    var file = File('test.txt');

    try {

      await file.delete();

    } catch (e) {

      print(e);

    }

  }

2.5 权限

如果我们没有权限写入 ‘/root/test.txt’ 文件,writeAsString 方法会抛出一个 FileSystemException 异常,然后我们在 catch 语句中捕获这个异常,并打印一个错误消息

void demo6() async {
    var file = File('/root/test.txt');
    try {
      await file.writeAsString('Hello, Dart!');
    } catch (e) {
      print('Error: $e');
    }
  }

三、目录 (Directory)

3.1 创建目录

使用 create 方法可以创建一个新的目录。如果目录已经存在,create 方法不会有任何效果。如果你希望创建的目录的父目录不存在,可以给 create 方法传入一个名为 recursive 的参数,将其设为 true

void dir1() async {
    var directory = Directory('test');
    await directory.create();
  }
1
2
3
4
3.2 目录列表
使用list方法可以列出目录的内容,包括文件和子目录。list 方法返回一个 Stream 对象,我们可以使用 await for 语句来遍历这个 Stream

void dir2() async {
     var directory = Directory('test');
     await for (var entity in directory.list()) {
       print(entity.path);
     }
  }
1
2
3
4
5
6
3.3 删除目录
使用 delete 方法可以删除一个目录。如果目录不存在,delete 方法不会有任何效果。如果你希望删除的目录包含文件或子目录,可以给 delete 方法传入一个名为 recursive 的参数,将其设为true

void dir3() async {
     var directory = Directory('test');
     await directory.delete();
  }

举报

相关推荐

0 条评论