Метод toFilePath абстрактного класса
String toFilePath(Возвращает путь к файлу из URI файла.
Возвращаемый путь имеет либо семантику Windows, либо не-Windows.
Для семантики не-Windows используется косая черта ("/") для разделения сегментов пути.
Для семантики Windows используется обратная косая черта ("\") для разделения сегментов пути.
Если URI абсолютный, путь начинается с разделителя пути, за исключением случаев использования семантики Windows и первого сегмента пути, являющегося буквой диска. При использовании семантики Windows компонент хоста в URI интерпретируется как файловый сервер, и возвращается UNC-путь.
По умолчанию используется семантика Windows или не-Windows, определяемая платформой, на которой работает Dart. При запуске в автономном VM это определяется VM на основе операционной системы. При запуске в браузере всегда используется семантика не-Windows.
Чтобы переопределить автоматическое определение используемой семантики, передайте значение для windows. Передача true будет использовать семантику Windows, а передача false будет использовать семантику не-Windows.
Если URI заканчивается косой чертой (то есть последний компонент пути пуст), возвращаемый путь к файлу также будет заканчиваться косой чертой.
При использовании семантики Windows URI, начинающиеся с буквы диска, не могут быть относительными к текущему диску на указанном диске. То есть, для URI file:///c:abc вызов toFilePath приведет к ошибке, так как сегмент пути не может содержать двоеточие в Windows.
Примеры с использованием семантики не-Windows (результат вызова toFilePath в комментарии):
Uri.parse("xxx/yyy"); // xxx/yyy
Uri.parse("xxx/yyy/"); // xxx/yyy/
Uri.parse("file:///xxx/yyy"); // /xxx/yyy
Uri.parse("file:///xxx/yyy/"); // /xxx/yyy/
Uri.parse("file:///C:"); // /C:
Uri.parse("file:///C:a"); // /C:a
Примеры с использованием семантики Windows (результирующий URI в комментарии):
Uri.parse("xxx/yyy"); // xxx\yyy
Uri.parse("xxx/yyy/"); // xxx\yyy\
Uri.parse("file:///xxx/yyy"); // \xxx\yyy
Uri.parse("file:///xxx/yyy/"); // \xxx\yyy\
Uri.parse("file:///C:/xxx/yyy"); // C:\xxx\yyy
Uri.parse("file:C:xxx/yyy"); // Throws as a path segment
// cannot contain colon on Windows.
Uri.parse("file://server/share/file"); // \\server\share\file
Если URI не является URI файла, вызов этого метода вызывает UnsupportedError.
Если URI не может быть преобразован в путь к файлу, вызов этого метода вызывает UnsupportedError.
Исходный код
// TODO(lrn): Deprecate and move functionality to File class or similar.
// The core libraries should not worry about the platform.
String toFilePath({bool windows});
© 2012 the Dart project authors
Licensed under the Creative Commons Attribution-ShareAlike License v4.0.
https://api.dartlang.org/stable/1.24.3/dart-core/Uri/toFilePath.html