Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/338.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java 文件:URI和斜杠_Java_Windows_Uri_File Uri - Fatal编程技术网

Java 文件:URI和斜杠

Java 文件:URI和斜杠,java,windows,uri,file-uri,Java,Windows,Uri,File Uri,我正在开发的一个应用程序涉及访问网络文件共享上的文件,我们使用URI来指定文件的位置 我对file:URI的理解是,它们应该采用file://+路径的形式。对于Windows网络共享,此路径类似于\\servername\dir\file,因此生成的URI变成file:////servername/dir/file 这对Java来说似乎很有用,但Win32 API似乎需要一个file://servername/dir/filestyle URI,Java拒绝它,因为它“有一个授权组件” 我是否正

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

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

这对Java来说似乎很有用,但Win32 API似乎需要一个
file://servername/dir/file
style URI,Java拒绝它,因为它“有一个授权组件”

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

编辑:我们希望能够将路径存储为URI,以便利用URI的方案部分指定其他位置(例如文件:与其他:)。但正如所指出的,看起来Java可能只是在URI方面有自己的问题…

似乎:

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

正确:
file://applib/products/a-b/abc_9/4148.920a/media/start.swf

关于:

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

new File("//SERVER/some/path").toURI().toString()
                                                -> "file:////SERVER/some/path
换句话说,URI将整个UNC路径存储在URI的路径组件中,并将服务器/授权组件留空。只要您始终使用此字符串表示,就能够成功地与java.net.URI交互


谢谢你的快速回复。第二个链接特别有用。虽然对我来说整个路径都存储在URI的“path”段是有意义的,但我可以看到Java在这方面有点不一致,所以我一定要注意这一点。事实上,据我所知,文件URL方案甚至不需要双斜杠,而只需要单斜杠。但在野外,这两种动物都经常出现。权限不存在时,路径不能以两个斜杠字符开头