在apache commons net ftpclient中,有一个ftpClient.printWorkingDirectory()函数用于获取当前目录的字符串。我怎样才能用jsch sftp客户端实现同样的事情呢?有一个叫做realpath(String)的方法,但它似乎不正确,我无法让它工作。有什么建议吗?
wmvff8tz1#
SFTP没有当前目录或“工作目录”的概念,这就是为什么你什么也找不到。SFTP中的所有路径必须是绝对的。相对路径的使用不是由标准定义的,而是特定于服务器的(因此,当你在不同的服务器上做同样的操作时,你可能会大吃一惊)。
kqlmhetl2#
使用ChannelSftp#pwd()方法。
ChannelSftp#pwd()
JSch jsch = new JSch(); Session jschSession = jsch.getSession(username, remoteHost); jschSession.setPassword(password); jschSession.connect(); ChannelSftp channelSftp = (ChannelSftp) jschSession.openChannel("sftp"); channelSftp.connect(); channelSftp.cd("/tmp/"); System.out.println(channelSftp.pwd()); // prints: /tmp channelSftp.disconnect(); jschSession.disconnect();
我使用的是版本0.1.55:
<dependency> <groupId>com.jcraft</groupId> <artifactId>jsch</artifactId> <version>0.1.55</version> </dependency>
2条答案
按热度按时间wmvff8tz1#
SFTP没有当前目录或“工作目录”的概念,这就是为什么你什么也找不到。SFTP中的所有路径必须是绝对的。相对路径的使用不是由标准定义的,而是特定于服务器的(因此,当你在不同的服务器上做同样的操作时,你可能会大吃一惊)。
kqlmhetl2#
使用
ChannelSftp#pwd()
方法。我使用的是版本0.1.55: