一尘不染

URL的java.nio.file.Path吗?

java

Java7附带了本地文件的默认Path实现。
URL的路径实现吗?

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

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);

目前,这引发了java.nio.file.FileSystemNotFoundException: Provider "http" not installed。我也许可以自己实现,但我不想重蹈覆辙。


阅读 225

收藏
2020-12-03

共1个答案

一尘不染

看来您真正要执行的工作是完成FTP的工作-将文件从一个位置复制到另一个位置。我建议您找到使用现有FTP代码库执行此操作的更好方法。

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

换句话说,(1)不会像对待URI一样对待URI,而是将其视为文件系统路径;(2)找到用于复制文件的FTP库;和/或(3)如果您确实想构建一个URI,执行此操作的Web服务通过POST请求提取文件复制的详细信息。如果您执行#3,则了解您的建筑物非常接近自定义,并且它只能在遵循您的特定设计的部分站点(即您自己构建的站点)上运行。我知道没有标准的参数集或通过POST命令进行“文件复制”的设置,我知道您可以利用它来使此“正常工作”-您将不得不将HTTP请求与Web服务上的Web服务进行匹配服务器端。

2020-12-03