description

# resolveSymbolicLinksSync method Null safety

String resolveSymbolicLinksSync ()

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.

resolveSymbolicLinksSync 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, `resolveSymbolicLinksSync` 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 `resolveSymbolicLinksSync`. One way of doing this is with the `Uri` class:

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

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

## Implementation

    String resolveSymbolicLinksSync() {
      var result = _resolveSymbolicLinks(_Namespace._namespace, _rawPath);
      _throwIfError(result, "Cannot resolve symbolic links", path);
      return result;
    }