Я пытаюсь загрузить файлы через sftp, используя библиотеку jsch. Я успешно это делаю, но хочу только загрузить файл, если он еще не загружен. Я собираю список записей и пытаюсь реализовать хэшетт, чтобы проверить и посмотреть, загружены ли они. Проблема в том, что она добавляет дубликаты в хэшсет и перезагружает все файлы. Ниже приведен код, который я написал (ну, важные части).HashSet добавляет Duplicate 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
1) Проверьте, как ChannelSftp .LsEntry.hashCode() и equals(). Возможно, этот класс не подходит как ключ структуры хеша. 2) Проверьте область действия заданной переменной. Он действительно помнит предыдущие звонки? –