current 属性
创建一个指向当前工作目录的目录对象。
实现
static Directory get current {
final IOOverrides? overrides = IOOverrides.current;
if (overrides == null) {
return _Directory.current;
}
return overrides.getCurrentDirectory();
}
设置 Dart 进程的当前工作目录。
这会影响所有运行的隔离区。设置的新值可以是 Directory 或 String。
新值将未经修改地传递给操作系统的系统调用,因此作为新工作目录传递的相对路径将由操作系统解析。
请注意,设置当前工作目录是一个同步操作,并且它会更改所有隔离区的当前工作目录。
请谨慎使用此功能——特别是在处理异步操作和多个隔离区时。当异步操作正在进行或其他隔离区正在与文件系统交互时更改工作目录可能会导致意外结果。
实现
static void set current(dynamic path) {
// Disallow implicit casts to avoid bugs like
// <https://github.com/dart-lang/sdk/issues/52140>.
//
// This can be removed if `strict-casts` is enabled.
path as Object?;
final IOOverrides? overrides = IOOverrides.current;
if (overrides == null) {
_Directory.current = path;
return;
}
// IOOverrides.setCurrentDirectory accepts only a [String].
overrides.setCurrentDirectory(switch (path) {
String s => s,
Directory d => d.path,
_ => throw ArgumentError('${Error.safeToString(path)} is not a String or'
' Directory'),
});
}