文件:URI和斜杠

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

我对文件:URI的理解是它们应该采用file:// + path的forms。 在Windowsnetworking共享的情况下,这个path看起来像\\servername\dir\file ,所以得到的URI变成file:////servername/dir/file

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

我是否正确理解networking共享URI? 有没有另一种方式来指定没有Java抱怨权威的path?

编辑:我们希望能够将path存储为URI,以便使用URI的scheme部分来指定其他位置(例如file:和其他:)。 但正如所指出的,它看起来像Java可能只是有自己的问题与URI …

看来Java是错误的 :

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

在Java中的UNC路径上 :

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

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

换句话说,URI将整个UNC路径存储在URI的路径组件中,并将服务器/权限组件留空。 只要你一直使用这个字符串表示,你将能够成功地与java.net.URI进行交互。