有 Java 编程相关的问题?

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

java JSch lls命令不反映lcd命令对目录的更改

我正在用Java开发一个SFTP项目,使用JSch库

我目前使用的代码是:http://www.jcraft.com/jsch/examples/Sftp.java.html

我遇到的问题是:

我的默认本地目录如下:c:/users/myusername/jsch/我用lcd命令将本地目录更改为c:/。之后,我用lpwd测试它,它会像我预期的那样返回“Local working directory:C:\”。但在那之后,我执行lls命令,它在开头(c:/users/myusername/jsch/)列出目录,而不是c:/

这是图书馆里的错误吗?因为我用XShell尝试了相同的命令,所以得到了我期望的不同结果(在lcdlls正常工作之后)。如果不是bug,我该如何解决它


共 (1) 个答案

  1. # 1 楼答案

    是的,是个虫子

    Sftp.java示例中lcd命令的实现调用了ChannelSftp.lcd()方法。调用会更改字段ChannelSftp.lcwd的值,可以使用ChannelSftp.lpwd()方法检索该字段

    但是lls命令的实现根本不使用ChannelSftp,甚至不使用它的ChannelSftp.lpwd(),因此它总是列出进程的实际本地工作目录,而不是ChannelSftp的“虚拟”本地工作目录

    解决方案:

    • 修复Sftp.java以使用ChannelSftp.lpwd()
    • 使用绝对路径