sftp:outbound-gateway移动文件无法正常工作

时间:2016-11-10 13:07:21

标签: spring-integration

我是Spring-integration的新手。我请求帮助我解决这个问题。

我正在使用sftp:outbound-gateway将文件从一个文件夹移动到另一个文件夹。

文件夹结构是:

top-dir
- module-dir
    - output-dir
        filexyz.txt
    - archive-dir

我想将filexyz.txt从输出移动到存档文件夹。

配置是:

<int-sftp:outbound-gateway 
session-factory="ftpSessionFactory"
expression="payload.remoteDirectory + '/' + payload.filename"
request-channel="inChannel"
command="mv"
rename-expression="payload.remoteDirectory + '/' +      
payload.filename.replaceFirst('output-dir','archive-dir')"
reply-channel="outChannel"/>

java代码:

 DirectChannel moveChannel = context.getBean("inChannel",DirectChannel.class);
 moveChannel.send(new GenericMessage<File>(new File("top-dir\module-dir\output-dir\filexyz.txt")));

我在how to replace string in SpEL expression?提到了问题,但无法解决我的问题。

我得到表达式评估失败:payload.remoteDirectory +'/'+ payload.filename exception。

我认为我在java代码中做错了。

请帮帮我。

1 个答案:

答案 0 :(得分:0)

  

expression="payload.remoteDirectory + '/' + payload.filename"

您的有效负载很简单java.io.File;它没有那些属性。

你需要使用绝对路径;

之类的东西

expression="payload.absolutePath

rename-expression="payload.absolutePath.replace....

如果您在Windows上运行,则可能还需要将\替换为/

要使用现有表达式,您需要自定义有效内容,而不是File,并且remoteDirectoryfilename属性。