當前位置: 首頁>>代碼示例 >>用法及示例精選 >>正文


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。非經特殊聲明,原始代碼版權歸原作者所有,本譯文未經允許或授權,請勿轉載或複製。