Я настроил beans-компоненты в файле XML с адаптером входящего канала с OUTBOUND GATEWAY. Я использую @serviceactivator в классе java для вызова канала. Но m получения файлов, которые находятся в корневой папке, я не могу получить файлы из подкаталогов.Загрузка файлов с FTP-сервера рекурсивно из разных подкаталогов
Мой XML-файл:
<int:inbound-channel-adapter channel="inbound1" expression="'/'">
<int:poller fixed-delay="3000"/>
</int:inbound-channel-adapter>
<int-ftp:outbound-gateway id="gatewayGet"
session-factory="ftpClientFactory"
request-channel="inbound1"
local-directory="C:/Users/pprakash/Desktop/DataFiles/actual"
auto-startup="true"
command="mget"
command-options="-R"
filename-pattern="*.csv"
expression="'actual/*/*'"
reply-channel="outbound"/>
<int:channel id="outbound">
<int:interceptors>
<int:wire-tap channel="logger"/>
</int:interceptors>
</int:channel>
<int:logging-channel-adapter id="logger" log-full-message="true" />
'<bean id="ftpClientFactory"
class="org.springframework.integration.ftp.session.DefaultFtpSessionFactory">
<property name="host" value="192.168.79.1"/>
<property name="port" value="21"/>
<property name="username" value="*****"/>
<property name="password" value="*****"/>
<property name="bufferSize" value="100000"/>
</bean>'
Мой Java-код, как: -
static int index=0;
@ServiceActivator(inputChannel = "inbound1")
public void foo1(File file) throws InterruptedException {
logger.debug("Inbound msg to gateway :[ "+(index++)+"]" + file.getAbsolutePath());
}
@ServiceActivator(inputChannel = "outbound")
public void foo2(List<File> file) throws InterruptedException {
System.out.println("outbound gateway");
logger.debug("File Received :[ "+(index++)+"]" + file.size());
}
hello gary, мои вспомогательные каталоги содержат * .csv файл ... его не пересекают подкаталог .. его единственный проход по файлу, который не находится в подкаталогах. как actual/abc/2016/имеет некоторые * .csv файл actual/abc/has * .csv file ... тогда фактический/abc/* .csv загружается только. –
Правильно, но сами каталоги должны соответствовать шаблону - вам нужно сделать паттен (regex) что-то вроде 'filename-regex =" (actual | abc | * .csv) "' - иначе 'actual' и' abc' будут отфильтрованы. Или вы можете использовать пользовательский 'FileListFilter', который игнорирует (не фильтрует) каталоги. Вероятно, мы должны добавить такой фильтр в структуру. Я добавил [JIRA Issue] (https://jira.spring.io/browse/INT-4149). –
Да, когда я проигнорировал файл-шаблон, то каждый файл из каждого подкаталога загружается. Спасибо gary , если мне нужен только файл .csv, который будет загружен тогда? если какой-либо новый файл помещается в эти подкаталоги при запуске сервера .. можем ли мы загрузить эти файлы? –