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尝试了相同的命令,所以得到了我期望的不同结果(在lcd
,lls
正常工作之后)。如果不是bug,我该如何解决它
# 1 楼答案
是的,是个虫子
在
Sftp.java
示例中lcd
命令的实现调用了ChannelSftp.lcd()
方法。调用会更改字段ChannelSftp.lcwd
的值,可以使用ChannelSftp.lpwd()
方法检索该字段但是
lls
命令的实现根本不使用ChannelSftp
,甚至不使用它的ChannelSftp.lpwd()
,因此它总是列出进程的实际本地工作目录,而不是ChannelSftp
的“虚拟”本地工作目录解决方案:
Sftp.java
以使用ChannelSftp.lpwd()
或