gpt4 book ai didi

java - 公共(public)VFS : SFTP URL Syntax while connecting to Windows Server running with Open SSH

转载 作者:太空宇宙 更新时间:2023-11-04 06:28:21 25 4
gpt4 key购买 nike

我们使用 Commons VFS API 在不同服务器之间传输文件。该代码非常适合 Linux 服务器。

但是我们遇到了 Windows 服务器的 URL 语法问题。我们尝试了以下 URL 类型列表,但所有这些类型都导致无效绝对 URI 错误

sftp://user@IP:C:\temp

sftp://user@IP/C:\temp

sftp://user@IP\C:\temp

stfp://user@IP/temp -- 导致无法确定文件类型

所有这些错误让我们产生了另一个疑问,即VFS是否支持通过SFTP连接到Windows文件系统。

感谢您在这方面的任何帮助。

最佳答案

您需要使用正斜杠将主机与路径以及不同的路径元素分开。

指定 dos 驱动器的方式有点取决于您使用的 SFTP 服务器。其中一些使用 cygwin 路径,如/cygdrive/c/temp,其他使用/C/Temp,还有一些使用基本路径下方的基本目录。

我不确定是否有一个实际上允许带冒号的驱动器号,但无论如何,如果您关心的话,您需要使用 %3a (十六进制代码)转义 : (冒号):

sftp://user@ip/C%3a/temp

如果您不想自己引用 URL 中所有可能的字符,您可以使用 this answer 中建议的 URI 类。 :(但是您需要确保以 /(斜杠)开始 path 字符串,以使其成为绝对路径。)

URI uri1 = new URI("sftp", "user:p@ssword", "127.0.0.1", -1, "/C:/temp", null, null);
fsm.resolveFile(uri1.toString(), opts);

或者当你不想转换本地路径时,可以使用:

String path = new File("C:\\temp").toURI().getPath();
URI uri2 = new URI("sftp", "user:p@ssword", "127.0.0.1", -1, path, null, null);
fsm.resolveFile(uri2.toString(), opts);

请告诉我哪种路径语法有效。

关于java - 公共(public)VFS : SFTP URL Syntax while connecting to Windows Server running with Open SSH,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/26471367/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com