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

plz*_*ful 5 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 命令无法理解这种路径格式。

谢谢。

Mar*_*ryl 5

SFTP 协议规定/必须用作路径分隔符。

请参阅SFTP 规范

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

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


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

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

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

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

无论如何,您的问题实际上不是关于 JSch,仅是 Java,而是关于您的 SFTP 服务器。

另请参见常见问题解答的WinSCP SFTP客户端:如何更改遥控器面板上的驱动器?