Метод resolveSymbolicLinksSync абстрактный
String resolveSymbolicLinksSync(Разрешает путь к файловому объекту относительно текущей рабочей директории, разрешая все символические ссылки в пути и разрешая все .. и . сегменты пути.
resolveSymbolicLinksSync использует родной API файловой системы операционной системы для разрешения пути, используя функцию realpath на Linux и OS X, и функцию GetFinalPathNameByHandle на Windows. Если путь не указывает на существующий файловый объект, resolveSymbolicLinksSync выбрасывает FileSystemException.
В Windows сегменты .. разрешаются до разрешения символической ссылки, а на других платформах символические ссылки разрешаются до их целевого объекта перед применением .. , который следует за этим.
Для обеспечения одинакового поведения на всех платформах разрешите .. сегменты перед вызовом resolveSymbolicLinksSync. Один из способов сделать это с помощью класса Uri.
var path = Uri.parse('.').resolveUri(new Uri.file(input)).toFilePath();
if (path == '') path = '.';
var resolved = new File(path).resolveSymbolicLinksSync();
print(resolved);
поскольку Uri.resolve удаляет .. сегменты. Это приведет к поведению Windows.
Исходный код
String resolveSymbolicLinksSync();
© 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/resolveSymbolicLinksSync.html