用于URL的java.nio.file.Path?

Gil*_*ili 33 java nio path

Java7附带了本地文件的默认Path实现.是否有URL的Path实现?

例如,我应该能够使用以下代码复制远程资源:

Path remote = Paths.get(new URI("http://www.example.com/foo/bar.html"));
Path local = Paths.get(new URI("/bar.html"));
Files.copy(remote, local);
Run Code Online (Sandbox Code Playgroud)

目前,这个抛出java.nio.file.FileSystemNotFoundException: Provider "http" not installed.我本可以自己实现,但我宁愿不重新发明轮子.

jef*_*unt 2

看起来您真正想做的是完成 FTP 所做的事情 - 将文件从一个地方复制到另一个地方。我建议您找到更好的方法来使用现有的 FTP 代码库来做到这一点。

URI 不是文件系统路径,因此您不能将它们视为文件系统路径。它们是地址/资源定位器,当您使用浏览器(或处理它们的另一个客户端)前往那里时,它们会触发它们后面的服务器定义的某些操作。服务器的功能没有标准,因此 Web 服务具有灵活性。因此,如果您的服务器以这种方式接受 HTTP 请求以方便文件复制,则您将必须自行设计,并将文件数据传递到 POST 请求中。

换句话说,(1) 不要将 URI 视为文件系统路径 - 它们不是,(2) 找到一个 FTP 库来复制文件,和/或 (3) 如果您确实想构建一个执行此操作的 Web 服务通过 POST 请求抽象出文件复制的详细信息。如果您执行#3,则了解您的构建非常接近自定义,并且它可能仅适用于遵循您的特定设计的站点子集(即您自己构建的站点)。我知道没有标准的参数集或通过 POST 命令进行“文件复制”,您可以利用它们来使其“正常工作” - 您必须将您的 HTTP 请求与 Web 服务相匹配服务器端。