description

# resolveSymbolicLinks method

Future<String> resolveSymbolicLinks()

Resolves the path of a file system object relative to the current working directory.

Resolves all symbolic links on the path and resolves all `..` and `.` path segments.

resolveSymbolicLinks uses the operating system's native file system API to resolve the path, using the `realpath` function on Linux and OS X, and the `GetFinalPathNameByHandle` function on Windows. If the path does not point to an existing file system object, `resolveSymbolicLinks` throws a `FileSystemException`.

On Windows the `..` segments are resolved before resolving the symbolic link, and on other platforms the symbolic links are resolved to their target before applying a `..` that follows.

To ensure the same behavior on all platforms resolve `..` segments before calling `resolveSymbolicLinks`. One way of doing this is with the Uri class:

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

since `Uri.resolve` removes `..` segments. This will result in the Windows behavior.

On Windows, attempting to resolve a symbolic link where the link type does not match the type of the resolved file system object will cause the Future to complete with a PathAccessException error.

## Implementation

    Future<String> resolveSymbolicLinks() {
      return _File._dispatchWithNamespace(_IOService.fileResolveSymbolicLinks, [
        null,
        _rawPath,
      ]).then((response) {
        _checkForErrorResponse(response, "Cannot resolve symbolic links", path);
        return response as String;
      });
    }