骆驼移动它后删除文件的内容
问题描述:
我有一个骆驼的春季启动应用程序,我尝试从服务器使用FTP将文件移动到我的本地计算机,我的问题是移动它后文件为空,骆驼移动它后删除文件的内容
这是我的类,它扩展了RouteBuilder类:
public class Controlador extends RouteBuilder{
@Autowired
private ArchivoBS archivoBS;
@Override
public void configure() throws Exception {
from("ftp://[email protected]:21?password=pass&passiveMode=true&delete=true").convertBodyTo(InputStream.class).process(archivoBS).to("file:C:\\Users\\juan.gaytan\\Desktop\\prueba2");
}
}
我班ArchivoBS实现了处理器接口:
@Service
public class ArchivoBS implements Processor{
@Override
public void process(Exchange exchange) {
InputStream fis = exchange.getIn().getBody(InputStream.class);
BufferedReader br = new BufferedReader(new InputStreamReader(fis));
String strLinea;
while ((strLinea = br.readLine()) != null) {
}
}
}
有人可以帮我解决我的就是起诉?,
在此先感谢。
答
由于@ClausIbsen所提供这个链接http://camel.apache.org/why-is-my-message-body-empty.html,我改变配置的方法,现在看起来是这样的:
@Override
public void configure() throws Exception {
from("ftp://[email protected]:21?password=pass&passiveMode=true&delete=true").streamCaching().convertBodyTo(InputStream.class).process(archivoBS).to("file:C:\\Users\\juan.gaytan\\Desktop\\prueba2");
}
我只需要添加.streamCaching()方法,它完美地工作,希望这有助于其他人。
它是什么类型的文件?文本文件?二进制文件? – Namphibian
Hi nphphibian,这个文件是一个.txt –
我能想到的一件事是,你正在关闭ProcessStream上的InputStream,然后当你用Apache Camel保存到文件时,它已经关闭了,所以没有内容。但是我不知道你是否可以将InputStream打开...但是请进行测试。 –