file:URI和斜杠

Sam*_*1Am 15 java windows uri file-uri

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

我对文件的理解:URI是它们应该采用file://+ path的形式.对于Windows网络共享,此路径看起来像\\servername\dir\file,因此生成的URI成为file:////servername/dir/file.

这似乎对Java的URI类很有用,但Win32 API似乎需要一个file://servername/dir/file样式URI,Java拒绝它,因为它"具有权限组件".

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

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

dtb*_*dtb 16

看来Java错了:

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

Java中的UNC路径:

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

new File("//SERVER/some/path").toURI().toString()
                                                -> "file:////SERVER/some/path
Run Code Online (Sandbox Code Playgroud)

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