使用Jsch列出远程服务器中的所有文件

我试图使用JSCH从远程服务器列出所有文件/目录,我也能够获得所有信息..

但我的问题是JSCH列出了所有具有文件创建日期,时间戳,读/写权限等类型的文件。,

但在我的情况下,我只需要远程服务器中的文件/目录名称,并且不需要其他信息。

下面是我的java代码..

import java.util.Vector; import com.jcraft.jsch.Channel; import com.jcraft.jsch.ChannelSftp; import com.jcraft.jsch.JSch; import com.jcraft.jsch.Session; public class Listremoteserver { /** * @param args */ @SuppressWarnings("unchecked") public static void main(String[] args) { String SFTPHOST = "xxxxx"; int SFTPPORT = 22; String SFTPUSER = "xxx"; String SFTPPASS = "xxxxx"; String SFTPWORKINGDIR = "/root"; Session session = null; Channel channel = null; ChannelSftp channelSftp = null; try{ JSch jsch = new JSch(); session = jsch.getSession(SFTPUSER,SFTPHOST,SFTPPORT); session.setPassword(SFTPPASS); java.util.Properties config = new java.util.Properties(); config.put("StrictHostKeyChecking", "no"); session.setConfig(config); session.connect(); channel = session.openChannel("sftp"); channel.connect(); channelSftp = (ChannelSftp)channel; channelSftp.cd(SFTPWORKINGDIR); Vector filelist = channelSftp.ls(SFTPWORKINGDIR); for(int i=0; i<filelist.size();i++){ System.out.println(filelist.get(i).toString()); } }catch(Exception ex){ ex.printStackTrace(); } } } 

上述计划的结果是

 -rw-r--r-- 1 root root 3161 Feb 11 2014 install.log.syslog -rw-r--r-- 1 root root 18 May 20 2009 .bash_logout -rw-r--r-- 1 root root 176 Sep 23 2004 .bashrc -rw-r--r-- 1 root root 176 May 20 2009 .bash_profile -rw-r--r-- 1 root root 129 Dec 3 2004 .tcshrc -rw------- 1 root root 1114 Feb 11 2014 anaconda-ks.cfg dr-xr-x--- 2 root root 4096 Feb 11 2014 . -rw-r--r-- 1 root root 9169 Feb 11 2014 install.log -rw------- 1 root root 1055 Feb 11 2014 .bash_history -rw-r--r-- 1 root root 100 Sep 23 2004 .cshrc dr-xr-xr-x 24 root root 4096 Feb 12 04:19 .. 

尝试运行此代码。 这里我们将列表元素类型转换为LsEntry,然后打印所需的属性。

 import java.io.File; import java.util.Vector; import com.jcraft.jsch.Channel; import com.jcraft.jsch.ChannelSftp; import com.jcraft.jsch.ChannelSftp.LsEntry; import com.jcraft.jsch.JSch; import com.jcraft.jsch.Session; public class Listremoteserver { /** * @param args */ @SuppressWarnings("unchecked") public static void main(String[] args) { String SFTPHOST = "xxxxx"; int SFTPPORT = 22; String SFTPUSER = "xxx"; String SFTPPASS = "xxxxx"; String SFTPWORKINGDIR = "/tmp"; String SFTPPRIVATEKEY = "/path/to/xxxxxxxxx.pem"; Session session = null; Channel channel = null; ChannelSftp channelSftp = null; try{ JSch jsch = new JSch(); File privateKey = new File(SFTPPRIVATEKEY); if(privateKey.exists() && privateKey.isFile()) jsch.addIdentity(SFTPPRIVATEKEY); session = jsch.getSession(SFTPUSER,SFTPHOST,SFTPPORT); session.setPassword(SFTPPASS); java.util.Properties config = new java.util.Properties(); config.put("StrictHostKeyChecking", "no"); session.setConfig(config); session.connect(); channel = session.openChannel("sftp"); channel.connect(); channelSftp = (ChannelSftp)channel; channelSftp.cd(SFTPWORKINGDIR); Vector filelist = channelSftp.ls(SFTPWORKINGDIR); for(int i=0; i 

尝试exec ls命令:

  Channel channel=session.openChannel("exec"); ((ChannelExec)channel).setCommand("cd " + SFTPWORKINGDIR + " && ls"); channel.connect(); channel.run(); Vector filelist = channel.run(); for(int i=0; i