Spec-Zone.ru › Dart 2

dart:io

Метод resolveSymbolicLinks

Future<String> resolveSymbolicLinks()
override

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

Разрешает все символические ссылки в пути и разрешает все .. и . сегменты пути.

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

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

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

var path = Uri.parse('.').resolveUri(Uri.file(input)).toFilePath();
if (path == '') path = '.';
var resolved = await File(path).resolveSymbolicLinks();
print(resolved);

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

Реализация

Future<String> resolveSymbolicLinks();

© 2012 the Dart project authors
Licensed under the BSD 3-Clause "New" or "Revised" License.
https://api.dart.dev/stable/2.18.5/dart-io/Directory/resolveSymbolicLinks.html

Spec-Zone.ru

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