当前属性

Directory current

创建一个指向当前工作目录的目录对象。

实现方式

static Directory get current {
  final IOOverrides? overrides = IOOverrides.current;
  if (overrides == null) {
    return _Directory.current;
  }
  return overrides.getCurrentDirectory();
}
void current=(dynamic path)

设置 Dart 进程的当前工作目录。

这会影响所有运行中的隔离器。设置的新值可以是DirectoryString

新值会被原样传递给操作系统调用,所以作为新工作目录传递的相对路径将由操作系统解析。

请注意,设置当前工作目录是一个同步操作,并且它改变了所有隔离器的工作目录。

请谨慎使用此功能,尤其是在处理异步操作和多个隔离器时。当异步操作正在进行中或者其他隔离器正在使用文件系统时更改工作目录可能会导致意外的结果。

实现方式

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'),
  });
}