我正在将一些Java代码(使用JSch库)写入SFTP到远程Windows机器并将文件复制到我的本地Windows文件夹。
在远程计算机上指定文件的路径时,我不得不以/C/temp/myfile.txt
而不是C:\temp\myfile.txt
的格式指定路径。
问题:
你能告诉我这种格式是什么吗?它有名字吗?
你能否告诉我是否可以使用任何其他格式的路径?我希望能够将路径指定为C:\temp\myfile.txt
,因此用户不清楚该文件是否完全来自远程计算机的SFTP。我猜我必须在路径中解析/拆分/替换字符,因为FTP get命令不会理解这种路径格式。
感谢。
答案 0 :(得分:2)
SFTP协议要求/
必须用作路径分隔符。
此协议将文件名表示为字符串。文件名是 假设使用斜杠('/')字符作为目录分隔符。
以斜杠开头的文件名是“绝对的”,并且相对于 文件系统的根目录。名称以任何其他字符开头 相对于用户的默认目录(主目录)。注意 假定识别用户是在此之外发生的 协议
SFTP服务器将服务器文件系统上的特定操作系统特定路径映射到符合SFTP规范的语法。
您必须使用服务器作者选择使用的语法。
因此,在所有情况下,您都必须将\
映射到/
。
您可能需要删除:
。虽然这实际上可以配置。许多(特别是Windows)SFTP服务器都有一个配置,允许您将虚拟SFTP路径映射到实际路径。在这种情况下,您可以将/C:/
映射到C:\
。
在任何情况下,您的问题实际上不是关于JSch,只关注Java,而是关于您的SFTP服务器。
另请参阅我的 WinSCP SFTP客户端的常见问题解答:How do I change drive on the remote panel?