Метод toFilePath
- {bool? windows}
Создает путь к файлу из 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 BSD 3-Clause "New" or "Revised" License.
https://api.dart.dev/stable/2.18.5/dart-core/Uri/toFilePath.html