如何在Java中仅显示来自SFTP服务器的目录列表

如何在Java中仅显示来自SFTP服务器的目录列表,java,Java,我使用下面的代码显示所有文件和目录。但我只想显示目录。请告诉我怎么做 Properties props=new Properties(); props.put("StrictHostKeyChecking","no"); JSch jsch=new JSch(); session=jsch.getSession(username, host); session.setConfig(props); session.setPassword(password);

我使用下面的代码显示所有文件和目录。但我只想显示目录。请告诉我怎么做

Properties props=new Properties();
    props.put("StrictHostKeyChecking","no");
    JSch jsch=new JSch();
    session=jsch.getSession(username, host);
    session.setConfig(props);
    session.setPassword(password);
    session.connect();
    ch=(ChannelSftp)session.openChannel("sftp");
    ch.connect();
it takes sftp connection    
    try
    {
        ch.cd(filepath);
    }
//更改到当前目录

    catch(Exception e)
    {
        System.out.println("filepath does not exists");

    }
    Vector<ChannelSftp.LsEntry> list = ch.ls(filepath);
    for(int i=0; i<list.size();i++){
        System.out.println(list.get(i).toString()); // display all files and directories
    }

System.out.println("file is"+flagfile);

}

catch(Exception e)
{
    System.out.println(e);
}
finally
{
catch(异常e)
{
System.out.println(“文件路径不存在”);
}
向量列表=ch.ls(文件路径);

for(int i=0;i您可以在for循环中对“ls”方法返回的每个条目使用“stat”方法,该方法将返回一个“SftpATTRS”对象,该对象具有一个名为“isDir()的方法。这将有助于过滤掉所有非目录文件

发现“ls”方法也返回属性。因此无需调用“stat”方法。 下面修改的代码段将只打印目录

Vector<ChannelSftp.LsEntry> list = ch.ls(filepath);
for(int i=0; i<list.size();i++){
    if (list.get(i).getAttrs().isDir()) {
      System.out.println(list.get(i).toString()); // display only directories
    }
}
Vector list=ch.ls(文件路径);
对于(int i=0;i