[英]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.