gpt4 book ai didi

java - 如何从预先确定的目录(按文件名)复制给定文件

转载 作者:行者123 更新时间:2023-12-02 13:35:39 25 4
gpt4 key购买 nike

我在这里使用 Spring Integration。

我有一个目录,另一个服务激活器正在将文件复制到该目录。

文件需要保留在那里,直到它们在数据库上的状态已处理 - 然后我需要将文件移动到下一个目录,在该目录中它们将被发送(通过 SFTP)到最终目的地。

我有一个轮询 channel ,可以(从数据库)获取处于已处理状态的文件列表。然后,我拆分传入列表(每个 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>然后转到<int-file:outbound-channel-adapter>File有效负载和Files.move()将为您执行。

关于java - 如何从预先确定的目录(按文件名)复制给定文件,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/43010852/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com