Uri.file 构造函数
从绝对或相对文件路径创建一个新的文件 URI。
文件路径通过 path
传入。
该路径使用 Windows 或非 Windows 语义进行解释。
使用非 Windows 语义时,斜杠 (/
) 用于在输入 path
中分隔路径段。
使用 Windows 语义时,反斜杠 (\
) 和正斜杠 (/
) 用于在输入 path
中分隔路径段,除非路径以 \\?\
开头,在这种情况下,只有反斜杠 (\
) 分隔路径段。
如果路径以路径分隔符开头,将创建一个绝对 URI(带有 file
方案和一个空的权限)。否则将创建一个没有方案或权限的相对 URI 引用。这一规则有一个例外,即当使用 Windows 语义并且路径以驱动器字母、冒号 (":") 和路径分隔符开头时,将创建一个绝对 URI。
是否使用 Windows 或非 Windows 语义的默认值由 Dart 运行的平台确定。在独立 VM 中运行时,VM 根据操作系统进行检测。在浏览器中运行时,始终使用非 Windows 语义。
要覆盖自动检测要使用的语义,请传入 windows
的值。传入 true
将使用 Windows 语义,传入 false
将使用非 Windows 语义。
使用非 Windows 语义的示例
// xxx/yyy
Uri.file('xxx/yyy', windows: false);
// xxx/yyy/
Uri.file('xxx/yyy/', windows: false);
// file:///xxx/yyy
Uri.file('/xxx/yyy', windows: false);
// file:///xxx/yyy/
Uri.file('/xxx/yyy/', windows: false);
// C%3A
Uri.file('C:', windows: false);
使用 Windows 语义的示例
// xxx/yyy
Uri.file(r'xxx\yyy', windows: true);
// xxx/yyy/
Uri.file(r'xxx\yyy\', windows: true);
file:///xxx/yyy
Uri.file(r'\xxx\yyy', windows: true);
file:///xxx/yyy/
Uri.file(r'\xxx\yyy/', windows: true);
// file:///C:/xxx/yyy
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.
Uri.file(r'C:', windows: true);
// This throws an error. A path with a drive letter is not absolute.
Uri.file(r'C:xxx\yyy', windows: true);
// file://server/share/file
Uri.file(r'\\server\share\file', windows: true);
如果传入的路径不是一个有效的文件路径,将抛出一个错误。
实现
factory Uri.file(String path, {bool? windows}) = _Uri.file;