Метод resolveSymbolicLinks
Разрешает путь к объекту файловой системы относительно текущей рабочей директории.
Разрешает все символические ссылки в пути и разрешает все .. и . сегменты пути.
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