我想通过使用jsch库的sftp下载文件。我成功地做到了这一点,但我只想下载文件,如果它尚未下载。我正在收集条目列表,并尝试实施哈希集以检查它们是否已被下载。问题是,它将重复项添加到哈希集并重新下载所有文件。以下是我写的代码(以及重要部分)。HashSet正在添加重复ChannelSftp.LsEntry
Vector<ChannelSftp.LsEntry> list = sftpChannel.ls("*.gz");
for (ChannelSftp.LsEntry entry : list) {
if (set.add(entry)) {
sftpChannel.get(entry.getFilename(), fileDestination);
}
}
这是所有的方法。所以,当我再次调用该方法时,它应该只下载我以前没有下载过的文件。但是,这不是那样做的。有什么建议么?请让我知道是否需要澄清任何事情。
这一切都取决于“等于”为“用GetFileName()” – bmargulies 2013-02-13 12:12:59
1的结果值的定义)检查如何ChannelSftp .LsEntry.hashCode()和equals()方法被实现。也许这个类不适合作为散列结构键。 2)检查设定变量的范围。它真的记得以前的电话吗? – 2013-02-13 12:14:08