我试过了两个,两个都做了同样的事情。有什么区别(只是为了兴趣)?
我有一个WebView,可以加载本地数据,并能够移交像这样的URL。
示例:
webView.loadUrl("file://storage/emulated/0/folder1/folder2/hello.html"
答案 0 :(得分:2)
使用schema://
将架构与路径分开的URL定义的差异。接下来你指定路径,如果路径是绝对的,那么它以/
开头。
Unix上正确的URL
"file:///storage/emulated/0/folder1/folder2/hello.html"
但它可能在Windows上
"file://c:/storage/emulated/0/folder1/folder2/hello.html"
答案 1 :(得分:2)
file://
是一个网址前缀,就像http://
或https://
一样。
如果您有三个斜杠,那么如果您只有两个斜杠,则文件路径将为/storage/emulated/...
而不是storage/emulated/...
。
前者在storage
文件夹(根文件夹)中查找名为/
的文件夹,并从那里继续。
后者应在工作目录中查找名为storage
的文件夹,并从那里继续。我不确定为什么没有。
答案 2 :(得分:2)
按规范file://storage/emulated/0/folder1/folder2/hello.html
进行操作无效。 storage
此处应代表主机名。
使用file URI scheme时,您可以选择忽略代表路径的主机。这在wiki页面上有描述,我在下面引用它。
文件URI采用
的形式
文件://主机/路径强>
其中host是系统的完全限定域名 路径是可访问的,path是分层目录路径 表单目录/目录/.../名称。如果省略host,则会被取消 是“localhost”,即URL所在的机器 解释。请注意,省略主机时,不会省略斜杠 (“file:///foo.txt”有效,而“file://foo.txt”不是,虽然 一些口译员设法处理后者。)
我的猜测是webView.loadUrl是宽松的并且接受不符合规范的文件URI。 Uri.fromFile()还提供了正确格式的示例。
示例:“file:///tmp/android.txt”