我正在编写一些 Java 代码(使用 JSch 库)到 SFTP 到远程 Windows 机器并将文件复制到我的本地 Windows 文件夹。
当在远程机器上指定文件的路径时,我被迫以格式/C/temp/myfile.txt而不是C:\temp\myfile.txt.
问题:
你能告诉我这是什么格式吗?有它的名字吗?
你能告诉我是否可以使用任何其他格式的路径吗?我希望能够将路径指定为C:\temp\myfile.txt,因此用户根本不知道该文件是否是从远程机器通过 SFTP 传输的。我猜我必须解析/拆分/替换路径中的字符,因为 FTP get 命令无法理解这种路径格式。
谢谢。
SFTP 协议规定/必须用作路径分隔符。
请参阅SFTP 规范:
该协议将文件名表示为字符串。假定文件名使用斜杠 ('/') 字符作为目录分隔符。
以斜杠开头的文件名是“绝对的”,并且相对于文件系统的根目录。以任何其他字符开头的名称相对于用户的默认目录(主目录)。请注意,假定识别用户发生在此协议之外。
SFTP 服务器将服务器文件系统上的真实操作系统特定路径映射到符合 SFTP 规范的语法。
您必须使用服务器作者选择使用的语法。
因此,在所有情况下,您都必须将 映射\到/。
您可能需要删除:. 虽然这实际上可以配置。许多(尤其是 Windows)SFTP 服务器都有一个配置,允许您将虚拟 SFTP 路径映射到真实路径。在这种情况下,您也许可以映射/C:/到C:\.
无论如何,您的问题实际上不是关于 JSch,仅是 Java,而是关于您的 SFTP 服务器。
另请参见常见问题解答我的WinSCP SFTP客户端:如何更改遥控器面板上的驱动器?