我是SFTP协议的新手。我需要使用SFTP协议列出服务器中的所有文件和文件夹。我使用JSch库实现了这个:
public ArrayList<JSONObject> listFiles(String deviceName, String location) throws Exception
{
this.sftpLogin();
Vector fileListVector;
if (Strings.isNullOrEmpty(location))
{
fileListVector = channelSftp.ls("/");
} else
{
fileListVector = channelSftp.ls("/"+location);
}
ArrayList<JSONObject> fileList = new ArrayList<>();
for (Object aFileListVector : fileListVector)
{
ChannelSftp.LsEntry entry = (ChannelSftp.LsEntry) aFileListVector;
if (entry.getFilename().equalsIgnoreCase(".") || entry.getFilename().equalsIgnoreCase(".."))
{
continue;
}
SftpATTRS attrs = entry.getAttrs();
fileList.add(ImportProtocolUtils.getFileJSONObject(attrs.isDir(), location, entry.getFilename()));
}
return fileList;
}
我试过贝壳&#39;和&#39; exec&#39;通道使用这个协议。但命令&#39; ls&#39;没有用。
Java中哪个是最好的库?
提前致谢。
答案 0 :(得分:1)
你必须递归到子目录。
类似的东西:
if (attrs.isDir())
{
fileList.addAll(listFiles(deviceName, location + "/" + entry.getFilename());
}