SFTP路径格式与本地路径格式

时间:2017-08-15 10:57:21

标签: java sftp jsch

我正在将一些Java代码(使用JSch库)写入SFTP到远程Windows机器并将文件复制到我的本地Windows文件夹。

在远程计算机上指定文件的路径时,我不得不以/C/temp/myfile.txt而不是C:\temp\myfile.txt的格式指定路径。

问题:

  1. 你能告诉我这种格式是什么吗?它有名字吗?

  2. 你能否告诉我是否可以使用任何其他格式的路径?我希望能够将路径指定为C:\temp\myfile.txt,因此用户不清楚该文件是否完全来自远程计算机的SFTP。我猜我必须在路径中解析/拆分/替换字符,因为FTP get命令不会理解这种路径格式。

  3. 感谢。

1 个答案:

答案 0 :(得分:2)

SFTP协议要求/必须用作路径分隔符。

请参阅SFTP specification

  

此协议将文件名表示为字符串。文件名是      假设使用斜杠('/')字符作为目录分隔符。

     

以斜杠开头的文件名是“绝对的”,并且相对于      文件系统的根目录。名称以任何其他字符开头      相对于用户的默认目录(主目录)。注意      假定识别用户是在此之外发生的      协议

SFTP服务器将服务器文件系统上的特定操作系统特定路径映射到符合SFTP规范的语法。

您必须使用服务器作者选择使用的语法。

因此,在所有情况下,您都必须将\映射到/

您可能需要删除:。虽然这实际上可以配置。许多(特别是Windows)SFTP服务器都有一个配置,允许您将虚拟SFTP路径映射到实际路径。在这种情况下,您可以将/C:/映射到C:\

在任何情况下,您的问题实际上不是关于JSch,只关注Java,而是关于您的SFTP服务器。

另请参阅我的 WinSCP SFTP客户端的常见问题解答:How do I change drive on the remote panel?