簡體   English   中英

如何從預定目錄復制給定文件(按文件名)

[英]How to copy a given file from a pre-determined directory (by filename)

我在這里使用Spring Integration。

我有一個目錄,其他服務激活器將文件復制到該目錄中。

文件需要保留在那里,直到processed完它們在數據庫上的狀態為止-然后,我需要將文件移動到下一個目錄,在該目錄下,文件將(通過SFTP)發送到最終目錄。

我有一個輪詢通道,可從(數據庫)獲取處於processed狀態的文件列表。 然后,我拆分傳入列表(每個Message現在都包含我需要移動到其payload下一個目錄的文件的名稱)。

如何告訴inbound-channel-adapter從定義的目錄中僅讀取給定的文件(我具有文件的完整路徑)並將其復制/移動到下一個目錄?

到目前為止,這是我的配置:

<!-- File Adapters: Inbound -->
<file:inbound-channel-adapter 
          id="filesInChannelAdapter"
          filename-regex="/^#jsonPath(payload,'$.filename')$/"   <<< this does not work     
          directory="${inbound.dir}" />

<!-- Service Activators -->
<int:service-activator input-channel="filesInChannelAdapter"
                       output-channel="filesOutChannelAdapter"
                       id="fileCopyActivator"
                       method="handleFile"
                       ref="fileCopyHandler"/>

 <!-- File Adapters: Outbound -->
 <file:outbound-channel-adapter 
        id="filesOutChannelAdapter"
        preserve-timestamp="true"
        delete-source-files="true"
        directory="${outbound.dir}"/>

有沒有一種方法可以讀取文件而不必輪詢目錄?

從數據庫查詢文件狀態后,我還能如何將文件從目錄A復制到目錄B? (通過REST端點)

FileWritingMessageHandler<int-file:outbound-channel-adapter> )可以為您完成此操作。 因此,您的REST端點帶來了一個文件名,例如通過<filter>在DB中檢查它的狀態,然后使用File有效負載轉到<int-file:outbound-channel-adapter> ,而Files.move()將是為您表演。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM