檔案轉換器
若要轉換從檔案系統讀取的資料為物件,以及反向轉換,您需要執行一些工作。與 FileReadingMessageSource
以及在較小程度上與 FileWritingMessageHandler
不同,您可能需要自己的機制來完成這項工作。為此,您可以實作 Transformer
介面。或者,您可以擴充 AbstractFilePayloadTransformer
以用於入站訊息。Spring Integration 提供了一些顯而易見的實作。
請參閱 Transformer
介面的 Javadoc,以查看哪些 Spring Integration 類別實作了它。同樣地,您可以查看 AbstractFilePayloadTransformer
類別的 Javadoc,以查看哪些 Spring Integration 類別擴充了它。
FileToByteArrayTransformer
擴充了 AbstractFilePayloadTransformer
,並使用 Spring 的 FileCopyUtils
將 File
物件轉換為 byte[]
。通常,使用一連串的轉換器比將所有轉換都放在單一類別中更好。在這種情況下,File
到 byte[]
的轉換可能是合理的首要步驟。
FileToStringTransformer
擴充了 AbstractFilePayloadTransformer
,將 File
物件轉換為 String
。如果沒有其他用途,這對於偵錯可能很有用(考慮將其與 wire tap 一起使用)。
若要設定檔案特定的轉換器,您可以使用檔案命名空間中的適當元素,如下列範例所示
<int-file:file-to-bytes-transformer input-channel="input" output-channel="output"
delete-files="true"/>
<int-file:file-to-string-transformer input-channel="input" output-channel="output"
delete-files="true" charset="UTF-8"/>
delete-files
選項向轉換器發出訊號,表示它應在轉換完成後刪除入站檔案。這絕不是在使用多執行緒環境(例如,當您一般使用 Spring Integration 時)中使用 FileReadingMessageSource
時,取代使用 AcceptOnceFileListFilter
的方法。