骆驼移动它后删除文件的内容

问题描述:

我有一个骆驼的春季启动应用程序,我尝试从服务器使用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) { 

     } 
    } 
} 

有人可以帮我解决我的就是起诉?,

在此先感谢。

+0

它是什么类型的文件?文本文件?二进制文件? – Namphibian

+0

Hi nphphibian,这个文件是一个.txt –

+2

我能想到的一件事是,你正在关闭ProcessStream上的InputStream,然后当你用Apache Camel保存到文件时,它已经关闭了,所以没有内容。但是我不知道你是否可以将InputStream打开...但是请进行测试。 –

由于@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()方法,它完美地工作,希望这有助于其他人。