您需要使用正斜杠将主机与路径和不同的路径元素分开。
指定 dos 驱动器的方式取决于您使用的 SFTP 服务器。其中一些使用 cygwin 路径,例如 /cygdrive/c/temp,另一些使用 /C/Temp,还有一些使用基本路径下方的某个基本目录。
我不确定是否有一个实际上允许带冒号的驱动器号,但无论如何,如果您关心,您需要使用(十六进制代码)转义:(冒号):%3a
sftp://user@ip/C%3a/temp
如果您不想自己在 URL 中引用所有可能的字符,则可以使用此答案中建议的 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);
请让我知道哪种路径语法有效。