Конструктор-фабрика Uri.file
Uri.file(Создаёт новый URI файла из абсолютного или относительного пути к файлу.
Путь к файлу передаётся в path.
Этот путь интерпретируется с использованием семантики Windows или не-Windows.
При семантике не-Windows используется косой слэш (/) для разделения сегментов пути в входном значении path.
При семантике Windows используются обратная косая черта (\) и косая черта (/) для разделения сегментов пути во входном значении path, за исключением случаев, когда путь начинается с \\?\ , в этом случае для разделения сегментов пути в path используется только обратная косая черта (\).
Если путь начинается с разделителя пути, создаётся абсолютный URI (с схемой file и пустым авторитетом). В противном случае создаётся относительная ссылка URI без схемы или авторитета. Исключением из этого правила является случай, когда используется семантика Windows, и путь начинается с буквы диска, за которой следует двоеточие (":") и разделитель пути; в этом случае создаётся абсолютный URI.
По умолчанию используется семантика Windows или не-Windows, определяемая платформой, на которой выполняется Dart. При выполнении в автономном VM это определяется VM на основе операционной системы. При выполнении в браузере всегда используется семантика не-Windows.
Чтобы переопределить автоматическое определение используемой семантики, передайте значение для windows. Передача значения true использует семантику Windows, а передача значения false использует семантику не-Windows.
Примеры с использованием семантики не-Windows:
// xxx/yyy
new Uri.file("xxx/yyy", windows: false);
// xxx/yyy/
new Uri.file("xxx/yyy/", windows: false);
// file:///xxx/yyy
new Uri.file("/xxx/yyy", windows: false);
// file:///xxx/yyy/
new Uri.file("/xxx/yyy/", windows: false);
// C%3A
new Uri.file("C:", windows: false);
Примеры с использованием семантики Windows:
// xxx/yyy new Uri.file(r"xxx\yyy", windows: true); // xxx/yyy/ new Uri.file(r"xxx\yyy\", windows: true); file:///xxx/yyy new Uri.file(r"\xxx\yyy", windows: true); file:///xxx/yyy/ new Uri.file(r"\xxx\yyy/", windows: true); // file:///C:/xxx/yyy new Uri.file(r"C:\xxx\yyy", windows: true); // This throws an error. A path with a drive letter, but no following // path, is not allowed. new Uri.file(r"C:", windows: true); // This throws an error. A path with a drive letter is not absolute. new Uri.file(r"C:xxx\yyy", windows: true); // file://server/share/file new Uri.file(r"\\server\share\file", windows: true);
Если переданный путь не является допустимым путём к файлу, выбрасывается ошибка.
Исходный код
factory Uri.file(String path, {bool windows}) = _Uri.file;
© 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/Uri.file.html