#java #sftp #jsch
#java #sftp #jsch
Вопрос:
У меня есть удаленный каталог /remote/Dir
, в котором много файлов с разными расширениями.
Нравится
*.abc
*.xyz
*.pqr
Я хочу загрузить все файлы, заканчивающиеся .abc
.xyz
.pqr
итак, в этом случае, как я использую JSch?
Ответ №1:
Добавьте все результаты ls в вектор.
Vector<ChannelSftp.LsEntry> list = channelSftp.ls("*.abc");
list.addAll(channelSftp.ls("*.xyz"));
list.addAll(channelSftp.ls("*.pqr"));
После вам нужно выполнить цикл for в этом списке, чтобы получить все соответствующие файлы..
Комментарии:
1. У меня есть файл свойств, в котором есть все эти расширения, такие как value=» .abc, .xyz, *.pqr» итак, как бы мне получить все расширения одно за другим и добавить в вектор?
2. Это решение требует обращения к серверу для каждой
ls()
операции, что неэффективно. Было бы эффективнее получить список всех файлов в удаленном каталоге и отфильтровать их один раз локально. К сожалению, для этого потребуется реализовать собственное сопоставление подстановочных знаков, поскольку Jsch не предоставляет свою логику подстановочных знаков.