Spec-Zone.ru › Dart 2

dart:io

Метод resolveSymbolicLinksSync

String resolveSymbolicLinksSync()
override

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

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

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

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

Для обеспечения одинакового поведения на всех платформах разрешите .. сегменты перед вызовом resolveSymbolicLinksSync. Один из способов сделать это – с использованием класса Uri:

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

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

Реализация

String resolveSymbolicLinksSync();

© 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/resolveSymbolicLinksSync.html

Spec-Zone.ru

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