我是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代码中做错了。
请帮帮我。
答案 0 :(得分:0)
expression="payload.remoteDirectory + '/' + payload.filename"
您的有效负载很简单java.io.File
;它没有那些属性。
你需要使用绝对路径;
之类的东西 expression="payload.absolutePath
和
rename-expression="payload.absolutePath.replace....
如果您在Windows上运行,则可能还需要将\
替换为/
。
要使用现有表达式,您需要自定义有效内容,而不是File
,并且remoteDirectory
和filename
属性。