如何使用Java列出SFTP服务器中的所有文件?

时间:2017-02-05 12:45:12

标签: java sftp jsch

我是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中哪个是最好的库?

提前致谢。

1 个答案:

答案 0 :(得分:1)

你必须递归到子目录。

类似的东西:

if (attrs.isDir())
{
    fileList.addAll(listFiles(deviceName, location + "/" + entry.getFilename());
} 

另见Display remote directory/all files in Jtree