“file:///”和“file://”之间的区别

时间:2014-08-17 22:00:24

标签: java android android-external-storage

我试过了两个,两个都做了同样的事情。有什么区别(只是为了兴趣)?

我有一个WebView,可以加载本地数据,并能够移交像这样的URL。

示例:

webView.loadUrl("file://storage/emulated/0/folder1/folder2/hello.html"

3 个答案:

答案 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”