dart:io
庫中Directory
類的用法介紹如下。
對文件係統上的目錄(或 folder
)的引用。
Directory 是一個包含 path 的對象,可以對其執行操作。目錄的路徑可以是absolute 或相對路徑。它允許訪問 parent 目錄,因為它是一個 FileSystemEntity 。
Directory 還提供對係統臨時文件目錄 systemTemp 的靜態訪問,以及訪問和更改 current 目錄的能力。
創建一個新的 Directory 以授予對具有指定路徑的目錄的訪問權限:
var myDir = Directory('myDir');
Directory 的大多數實例方法同時存在於同步和異步變體中,例如 create 和 createSync 。除非您有特定原因使用方法的同步版本,否則請首選異步版本以避免阻塞您的程序。
創建目錄
以下代碼示例使用 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);
}
列出目錄的條目
使用list 或listSync 方法獲取目錄中包含的文件和目錄。將 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');
}
除了 exists , stat 、 rename 和其他方法也是異步的。
其他資源
-
Library 之旅的Files and directories 部分。
-
Write Command-Line Apps 是關於編寫 命令行 應用程序的教程,其中包含有關文件和目錄的信息。
- 實現的類型
相關用法
- Dart Directory.resolveSymbolicLinks用法及代碼示例
- Dart Directory.resolveSymbolicLinksSync用法及代碼示例
- Dart DivElement用法及代碼示例
- Dart DateTime.toUtc用法及代碼示例
- Dart DateTime.minute用法及代碼示例
- Dart DateTime.toIso8601String用法及代碼示例
- Dart DomStringList.first用法及代碼示例
- Dart DateTime.fromMillisecondsSinceEpoch用法及代碼示例
- Dart DateTime.add用法及代碼示例
- Dart DateTime.isAfter用法及代碼示例
- Dart DoubleLinkedQueue.from用法及代碼示例
- Dart DateTime用法及代碼示例
- Dart DateTime.weekday用法及代碼示例
- Dart DomRectList.length用法及代碼示例
- Dart DateTime.isAtSameMomentAs用法及代碼示例
- Dart DomRectList.first用法及代碼示例
- Dart Duration.inDays用法及代碼示例
- Dart DomStringList.elementAt用法及代碼示例
- Dart Duration.inMicroseconds用法及代碼示例
- Dart DateTime.hour用法及代碼示例
- Dart DynamicLibraryExtension.lookupFunction用法及代碼示例
- Dart DateTime.isBefore用法及代碼示例
- Dart DateTime.utc用法及代碼示例
- Dart DeferredLibrary用法及代碼示例
- Dart DoubleLinkedQueue.isEmpty用法及代碼示例
注:本文由純淨天空篩選整理自dart.dev大神的英文原創作品 Directory class。非經特殊聲明,原始代碼版權歸原作者所有,本譯文未經允許或授權,請勿轉載或複製。