当前位置: 首页>>代码示例 >>用法及示例精选 >>正文


Dart Directory用法及代码示例


dart:io 库中Directory 类的用法介绍如下。

对文件系统上的目录(或 folder )的引用。

Directory 是一个包含 path 的对象,可以对其执行操作。目录的路径可以是absolute 或相对路径。它允许访问 parent 目录,因为它是一个 FileSystemEntity

Directory 还提供对系统临时文件目录 systemTemp 的静态访问,以及访问和更改 current 目录的能力。

创建一个新的 Directory 以授予对具有指定路径的目录的访问权限:

var myDir = Directory('myDir');

Directory 的大多数实例方法同时存在于同步和异步变体中,例如 createcreateSync 。除非您有特定原因使用方法的同步版本,否则请首选异步版本以避免阻塞您的程序。

创建目录

以下代码示例使用 create 方法创建一个目录。通过将recursive 参数设置为true,您可以创建命名目录及其所有必要的父目录(如果它们尚不存在)。

import 'dart:io';

void main() async {
  // Creates dir/ and dir/subdir/.
  var directory = await Directory('dir/subdir').create(recursive: true);
  print(directory.path);
}

列出目录的条目

使用listlistSync 方法获取目录中包含的文件和目录。将 recursive 设置为 true 以递归列出所有子目录。将 followLinks 设置为 true 以遵循符号链接。 list 方法返回FileSystemEntity 对象的Stream。侦听流以访问找到的每个对象:

import 'dart:io';

void main() async {
  // Get the system temp directory.
  var systemTempDir = Directory.systemTemp;

  // List directory contents, recursing into sub-directories,
  // but not following symbolic links.
  await for (var entity in
      systemTempDir.list(recursive: true, followLinks: false)) {
    print(entity.path);
  }
}

异步方法的使用

I/O 操作可以在等待操作完成时阻塞程序一段时间。为了避免这种情况,所有涉及 I/O 的方法都有一个异步变体,它返回一个 Future 。这个未来在 I/O 操作完成时完成。当 I/O 操作正在进行时,Dart 程序不会被阻塞,并且可以执行其他操作。

例如,确定目录是否存在的 exists 方法使用 Future 异步返回布尔值。

import 'dart:io';

void main() async {
  final myDir = Directory('dir');
  var isThere = await myDir.exists();
  print(isThere ? 'exists' : 'non-existent');
}

除了 existsstatrename 和其他方法也是异步的。

其他资源

实现的类型

FileSystemEntity

相关用法


注:本文由纯净天空筛选整理自dart.dev大神的英文原创作品 Directory class。非经特殊声明,原始代码版权归原作者所有,本译文未经允许或授权,请勿转载或复制。