метод 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