我们使用Commons VFS API在不同服务器之间进行文件传输。该代码适用于Linux服务器。
但我们正在为Windows服务器提供URL语法问题。我们尝试了下面的网址类型列表,但所有这些都导致了无效的绝对URI错误,
SFTP://用户@ IP:C:\温度
SFTP://用户@ IP / C:\温度
SFTP://用户@ IP \ C:\温度
stfp:// user @ IP / temp - 导致无法确定文件类型
所有这些错误在我们的脑海中引发了另一个疑问,即VFS是否支持通过SFTP连接到Windows文件系统。
对此方面的任何帮助表示赞赏。
答案 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}}
请告诉我哪种路径语法有效。