我正在创建一个文件传输路径,该路径使用移动来设置一个动态路径,在成功传输文件后,文件将在该路径中移动。我还设置了一个通知程序来跟踪文件传输事件。
由于移动路径是动态的,我需要得到文件传输后移动文件的路径。该路径如何在通知程序中显示?
public class MyFtpServiceBuilder extends RouteBuilder {
@Override
public void configure() throws Exception {
getContext()
.getManagementStrategy()
.addEventNotifier(new MyFtpServiceNotifier());
from("file:C:/tmp/inputfolder?move=archive/${date:now:yyyyMMdd}/${file:onlyname}")
.routeId("myRoute")
.to("file:C:/tmp/outputfolder")
}
}
public class MyFtpServiceNotifier extends EventNotifierSupport {
@Override
public void notify(EventObject event) throws Exception {
Exchange exchange = ((AbstractExchangeEvent) event).getExchange();
if (event instanceof ExchangeSentEvent) {
// Want to get here the path where file was moved
}
}
@Override
public boolean isEnabled(EventObject event) {
return event instanceof AbstractExchangeEvent;
}
}
我不知道如何在通知程序中执行此操作,但您始终可以添加处理器并使用FileEndpoint。getMove()。evaluate()方法获取最终移动的文件路径。
例如:
@Override
public void process(final Exchange exchange) throws Exception {
File movedFile = null;
if (exchange.getFromEndpoint() instanceof FileEndpoint) {
FileEndpoint fileEndpoint = (FileEndpoint) exchange.getFromEndpoint();
String movePath = fileEndpoint.getMove().evaluate(exchange, String.class);
File inputDir = fileEndpoint.getFile();
movedFile = new File(inputDir, movePath);
}
}
您可以尝试向exchange添加标头,例如:
。setHeader(“FILE\u PROCESSED”)。简单(“存档/${日期:现在:yyyyymmdd}/${文件:onlyname}”)
问题内容: 我想流式传输文件中包含的行,但是一旦处理完每个文件就将其移动到另一个文件夹。 当前的过程是这样的: 说明: 我创建的小号 我为他们每个人创建一个 我到线的 我打印每一行。 代码(为简单起见,省略了例外): 一旦每个文件都已被完全读取 ,是否可以 移动它 并继续处理流中的其他文件? 问题答案: 您可以将关闭动作链接到流,如果发生以下情况,该动作将自动执行: 状态文档很重要: 当在流上调用
问题内容: 我已经使用spring-integration java dsl定义了一个流,以ftp传输文件,进行处理,然后将其传输回“存档”目录,最后将其移动到本地存档目录中。这是“相当容易”的: 如果我追加 在ftp适配器配置后,bean初始化程序将回复以下错误消息: 我该如何解决? 问题答案: 作为解决方法,我重构了代码,放弃了文件适配器: }
我只使用一个名称运行FileInfo.MoveTo(“filename.txt”),而不是传递完整路径,文件就消失了。我相信在linux中,这将使它进入根目录“/”,但在Windows上,我不确定是否有根目录这样的东西,而不仅仅是C:有没有办法找到我丢失的文件?
问题内容: 这个问题已经在这里有了答案 : 7年前关闭。 可能重复: 使用jQuery输入文件的完整路径 我有以下html元素 如果我用 我只是文件名,而不是文件的完整绝对路径。有人可以告诉我如何获得完整路径吗? 问题答案: 您不能这样做-由于安全问题,浏览器将不允许这样做。尽管有解决方法,但事实是您不应该依靠这种方法。以下堆栈溢出问题与此处相关: 使用jquery输入文件的完整路径 如何从Fir
我有这个php代码: 和函数工作正常,我没有得到任何错误,但文件没有被复制。我怎么能看出这背后有什么错误?或者我如何解决这个问题?