Загрузка файла с динамически меняющимся именем с SFTP-сервера ⇐ JAVA
-
Anonymous
Загрузка файла с динамически меняющимся именем с SFTP-сервера
Ниже приведен код из документации Spring, связанный с подключением к SFTP-серверу.
@SpringBootApplication публичный класс SftpJavaApplication {
public static void main(String[] args) { новый SpringApplicationBuilder (SftpJavaApplication.class) .web(ложь) .run(аргументы); } @Бин public SessionFactory sftpSessionFactory() { Фабрика DefaultSftpSessionFactory = новая DefaultSftpSessionFactory (true); Factory.setHost("локальный хост"); фабрика.setPort(порт); Factory.setUser("foo"); Factory.setPassword("фу"); Factory.setAllowUnknownKeys(истина); Factory.setTestSession(истина); вернуть новый CachingSessionFactory(фабрика); } @Бин public SftpInboundFileSynchronizer sftpInboundFileSynchronizer() { SftpInboundFileSynchronizer fileSynchronizer = новый SftpInboundFileSynchronizer (sftpSessionFactory()); fileSynchronizer.setDeleteRemoteFiles(false); fileSynchronizer.setRemoteDirectory("foo"); fileSynchronizer.setFilter(новый SftpSimplePatternFileListFilter("*.xml")); вернуть файлSynchronizer; } @Бин @InboundChannelAdapter(channel = "sftpChannel", poller = @Poller(fixedDelay = "5000")) public MessageSource sftpMessageSource() { Источник SftpInboundFileSynchronizingMessageSource = новый SftpInboundFileSynchronizingMessageSource (sftpInboundFileSynchronizer()); source.setLocalDirectory(новый файл("sftp-inbound")); source.setAutoCreateLocalDirectory(истина); source.setLocalFilter(новый AcceptOnceFileListFilter()); source.setMaxFetchSize(1); источник возврата; } @Бин @ServiceActivator(inputChannel = "sftpChannel") публичный обработчик MessageHandler() { вернуть новый MessageHandler() { @Override public void handleMessage(Message message) выдает MessagingException { System.out.println(message.getPayload()); } }; }
У меня есть задача раз в день зайти на сервер по расписанию и получить файл с определенным именем. На самом деле имя файла — это сегодняшняя дата. То есть каждый день мне нужно зайти на сервер и подобрать среди всех доступных 1 файл, имя которого соответствует дате совершения этого запроса.
Я не могу понять, как адаптировать указанную конфигурацию для решения этой проблемы. Пожалуйста, помогите.
Я понимаю, что мне нужно создать собственный фильтр для решения этой задачи, но я не уверен, от чего именно мне нужно наследовать.
Ниже приведен код из документации Spring, связанный с подключением к SFTP-серверу.
@SpringBootApplication публичный класс SftpJavaApplication {
public static void main(String[] args) { новый SpringApplicationBuilder (SftpJavaApplication.class) .web(ложь) .run(аргументы); } @Бин public SessionFactory sftpSessionFactory() { Фабрика DefaultSftpSessionFactory = новая DefaultSftpSessionFactory (true); Factory.setHost("локальный хост"); фабрика.setPort(порт); Factory.setUser("foo"); Factory.setPassword("фу"); Factory.setAllowUnknownKeys(истина); Factory.setTestSession(истина); вернуть новый CachingSessionFactory(фабрика); } @Бин public SftpInboundFileSynchronizer sftpInboundFileSynchronizer() { SftpInboundFileSynchronizer fileSynchronizer = новый SftpInboundFileSynchronizer (sftpSessionFactory()); fileSynchronizer.setDeleteRemoteFiles(false); fileSynchronizer.setRemoteDirectory("foo"); fileSynchronizer.setFilter(новый SftpSimplePatternFileListFilter("*.xml")); вернуть файлSynchronizer; } @Бин @InboundChannelAdapter(channel = "sftpChannel", poller = @Poller(fixedDelay = "5000")) public MessageSource sftpMessageSource() { Источник SftpInboundFileSynchronizingMessageSource = новый SftpInboundFileSynchronizingMessageSource (sftpInboundFileSynchronizer()); source.setLocalDirectory(новый файл("sftp-inbound")); source.setAutoCreateLocalDirectory(истина); source.setLocalFilter(новый AcceptOnceFileListFilter()); source.setMaxFetchSize(1); источник возврата; } @Бин @ServiceActivator(inputChannel = "sftpChannel") публичный обработчик MessageHandler() { вернуть новый MessageHandler() { @Override public void handleMessage(Message message) выдает MessagingException { System.out.println(message.getPayload()); } }; }
У меня есть задача раз в день зайти на сервер по расписанию и получить файл с определенным именем. На самом деле имя файла — это сегодняшняя дата. То есть каждый день мне нужно зайти на сервер и подобрать среди всех доступных 1 файл, имя которого соответствует дате совершения этого запроса.
Я не могу понять, как адаптировать указанную конфигурацию для решения этой проблемы. Пожалуйста, помогите.
Я понимаю, что мне нужно создать собственный фильтр для решения этой задачи, но я не уверен, от чего именно мне нужно наследовать.
Мобильная версия