2016-10-28 3 views
0

Я настроил 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()); 

} 

ответ

0

filename-pattern="*.csv"

Если ваши подкаталоги также не соответствуют этому шаблону, они не будут сканироваться.

См the documentation

Например, будет получать все файлы заканчивая 1.txt в удаленный каталог и Поддиректория subDir. Если подкаталог фильтруется, никакого дополнительного обхода этого подкаталога не выполняется.

(Мое внимание).

Итак, ваш шаблон должен быть таким, чтобы подкаталоги в дереве проходили.

+0

hello gary, мои вспомогательные каталоги содержат * .csv файл ... его не пересекают подкаталог .. его единственный проход по файлу, который не находится в подкаталогах. как actual/abc/2016/имеет некоторые * .csv файл actual/abc/has * .csv file ... тогда фактический/abc/* .csv загружается только. –

+0

Правильно, но сами каталоги должны соответствовать шаблону - вам нужно сделать паттен (regex) что-то вроде 'filename-regex =" (actual | abc | * .csv) "' - иначе 'actual' и' abc' будут отфильтрованы. Или вы можете использовать пользовательский 'FileListFilter', который игнорирует (не фильтрует) каталоги. Вероятно, мы должны добавить такой фильтр в структуру. Я добавил [JIRA Issue] (https://jira.spring.io/browse/INT-4149). –

+0

Да, когда я проигнорировал файл-шаблон, то каждый файл из каждого подкаталога загружается. Спасибо gary , если мне нужен только файл .csv, который будет загружен тогда? если какой-либо новый файл помещается в эти подкаталоги при запуске сервера .. можем ли мы загрузить эти файлы? –

Смежные вопросы