我希望在使用自定义重命名(例如字符串,时间戳等)将文件从一个文件夹移动到另一个文件夹时添加重命名功能。
阅读this post后,我可以重命名如下:
@Bean
@ServiceActivator(inputChannel = FILE_CHANNEL_SOURCE)
public MessageHandler moveFiles() {
FileWritingMessageHandler handler = new FileWritingMessageHandler(new File(processingDir));
handler.setFileExistsMode(FileExistsMode.FAIL);
handler.setDeleteSourceFiles(true);
handler.setExpectReply(false);
handler.setFileNameGenerator(processingFileNameGenerator());
return handler;
}
@Bean
public DefaultFileNameGenerator processingFileNameGenerator() {
DefaultFileNameGenerator defaultFileNameGenerator = new DefaultFileNameGenerator();
defaultFileNameGenerator.setExpression("payload.name + '.processing'");
return defaultFileNameGenerator;
}
但我想像这样重命名:
@Bean
public DefaultFileNameGenerator processingFileNameGenerator() {
DefaultFileNameGenerator defaultFileNameGenerator = new DefaultFileNameGenerator();
String timestamp = String.valueOf(System.currentTimeMillis()); // Or any custom String here
defaultFileNameGenerator.setExpression("payload.name" + timestamp);
return defaultFileNameGenerator;
}
但是DefaultFileNameGenerator无法处理这个'表达式',那么我们该如何做呢?
答案 0 :(得分:1)
我实际上今天找到了答案,我希望你能发现这个代码对那些试图达到同样目标的人有用。
@Bean
public DefaultFileNameGenerator processingFileNameGenerator() {
DefaultFileNameGenerator defaultFileNameGenerator = new DefaultFileNameGenerator();
String timestamp = String.valueOf(System.currentTimeMillis());
String expression = fileHelper.toExpression("payload.name + '.{}'", timestamp);
defaultFileNameGenerator.setExpression(expression);
return defaultFileNameGenerator;
}
FileHelper.class:
public class FileHelper {
public String toExpression(String message, String... params){
return MessageFormatter.arrayFormat(message, params).getMessage();
}
}