Spec-Zone.ru › Dart 1

dart:io

метод resolveSymbolicLinks абстрактный

Future<String> resolveSymbolicLinks()

Разрешает путь к объекту файловой системы относительно текущей рабочей директории, разрешая все символические ссылки в пути и разрешая все .. и . сегменты пути.

resolveSymbolicLinks использует нативный API файловой системы операционной системы для разрешения пути, используя функцию realpath на linux и OS X, и функцию GetFinalPathNameByHandle на Windows. Если путь не указывает на существующий объект файловой системы, resolveSymbolicLinks выбрасывает FileSystemException.

В Windows сегменты .. разрешаются до разрешения символической ссылки, а на других платформах символические ссылки разрешаются до их целевого объекта перед применением .. , который следует за этим.

Чтобы обеспечить одинаковое поведение на всех платформах, разрешите .. сегменты перед вызовом resolveSymbolicLinks. Один из способов сделать это с помощью класса Uri:

var path = Uri.parse('.').resolveUri(new Uri.file(input)).toFilePath();
if (path == '') path = '.';
new File(path).resolveSymbolicLinks().then((resolved) {
  print(resolved);
});

поскольку Uri.resolve удаляет .. сегменты. Это приведет к поведению Windows.

Исходный код

Future<String> resolveSymbolicLinks();

© 2012 the Dart project authors
Licensed under the Creative Commons Attribution-ShareAlike License v4.0.
https://api.dartlang.org/stable/1.24.3/dart-io/Directory/resolveSymbolicLinks.html

Spec-Zone.ru

Настройки Оффлайн Что нового Помощь О нас
Spec-Zone .ru
спецификации, руководства, описания, API