Spec-Zone.ru › Dart 2

dart:io

метод resolveSymbolicLinksSync

String resolveSymbolicLinksSync()

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

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

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() {
  var result = _resolveSymbolicLinks(_Namespace._namespace, _rawPath);
  _throwIfError(result, "Cannot resolve symbolic links", path);
  return result;
}

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

Spec-Zone.ru

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