Commons VFS:连接到使用Open SSH运行的Windows Server时的SFTP URL语法

时间:2014-10-20 17:23:58

标签: java ssh apache-commons-vfs

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

但我们正在为Windows服务器提供URL语法问题。我们尝试了下面的网址类型列表,但所有这些都导致了无效的绝对URI错误

SFTP://用户@ IP:C:\温度

SFTP://用户@ IP / C:\温度

SFTP://用户@ IP \ C:\温度

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

所有这些错误在我们的脑海中引发了另一个疑问,即VFS是否支持通过SFTP连接到Windows文件系统。

对此方面的任何帮助表示赞赏。

1 个答案:

答案 0 :(得分:1)

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

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

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

{{1}}

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