file:URI和斜杠

时间:2009-12-10 01:05:09

标签: java windows uri file-uri

我正在处理的应用程序涉及访问网络文件共享上的文件,我们正在使用URI来指定文件的位置。

我对文件的理解:URI应该采用file:// + 路径的形式。对于Windows网络共享,此路径类似于\\servername\dir\file,因此生成的URI变为file:////servername/dir/file

这似乎对Java的URI class非常有用,但Win32 API似乎需要一个file://servername/dir/file样式的URI,Java拒绝它,因为它“具有权限组件”。

我是否正确理解网络共享URI?是否有另一种方法来指定没有Java抱怨权限的路径?

编辑:我们希望能够将路径存储为URI,以便利用URI的scheme-part来指定其他位置(例如file:versus other :)。但正如所指出的,看起来Java可能只有自己的URI问题......

1 个答案:

答案 0 :(得分:16)

似乎Java is wrong

  

不正确:file:////applib/products/a%2Db/abc%5F9/4148.920a/media/start.swf
  正确:file://applib/products/a-b/abc_9/4148.920a/media/start.swf

UNC paths in Java上:

  

URI类合理地处理UNC路径,但有一些问题。在Java类库中,UNC路径的字符串表示形式如下:

new File("//SERVER/some/path").toURI().toString()
                                                -> "file:////SERVER/some/path
     

换句话说,URI将整个UNC路径存储在URI的路径组件中,并使服务器/授权组件保持为空。只要您始终使用此字符串表示形式,您就能够与java.net.URI成功交互。