如何在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