Spec-Zone.ru › Dart 2

dart:core

абстрактный метод toFilePath

String toFilePath(
  1. {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

Spec-Zone.ru

Настройки Оффлайн Что нового Помощь О нас
Spec-Zone .ru
спецификации, руководства, описания, API