абстрактный метод toFilePath
- {bool? windows}
Создает путь к файлу из URI файла.
Возвращаемый путь имеет семантику Windows или не-Windows.
Для семантики не-Windows для разделения сегментов пути используется косая черта ("/").
Для семантики Windows для разделения сегментов пути используется обратная косая черта ("\").
Если URI является абсолютным, путь начинается с разделителя пути, кроме случая, когда используется семантика Windows и первый сегмент пути является буквой диска. При использовании семантики Windows компонент узла в URI интерпретируется как файловый сервер, и возвращается путь UNC.
По умолчанию выбор семантики Windows или не-Windows определяется платформой, на которой запущен Dart. При запуске в автономной виртуальной машине это определяется виртуальной машиной на основе операционной системы. При запуске в браузере всегда используется семантика не-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.19.6/dart-core/Uri/toFilePath.html