有 Java 编程相关的问题?

你可以在下面搜索框中键入要查询的问题!

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

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

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

问题:

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

  2. 你能告诉我是否可以使用其他格式的路径吗?我希望能够将路径指定为C:\temp\myfile.txt,因此用户根本不知道该文件是否是从远程机器上SFTP的。我猜我必须解析/拆分/替换路径中的字符,因为FTP get命令不理解此路径格式

谢谢


共 (1) 个答案

  1. # 1 楼答案

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

    SFTP specification

    This protocol represents file names as strings. File names are assumed to use the slash ('/') character as a directory separator.

    File names starting with a slash are "absolute", and are relative to the root of the file system. Names starting with any other character are relative to the user's default directory (home directory). Note that identifying the user is assumed to take place outside of this protocol.


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

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

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

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

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

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