Spring boot Camel正在移动文件后删除其内容

Spring boot Camel正在移动文件后删除其内容,spring-boot,ftp,apache-camel,Spring Boot,Ftp,Apache Camel,我有一个带camel的spring boot应用程序,我尝试使用FTP将文件从服务器移动到本地计算机,我的问题是移动后文件是空的 这是我扩展RouteBuilder类的类: public class Controlador extends RouteBuilder{ @Autowired private ArchivoBS archivoBS; @Override public void configure() throws Exception {

我有一个带camel的spring boot应用程序,我尝试使用FTP将文件从服务器移动到本地计算机,我的问题是移动后文件是空的

这是我扩展RouteBuilder类的类:

public class Controlador extends RouteBuilder{
    @Autowired
    private ArchivoBS archivoBS;

    @Override
    public void configure() throws Exception {
        from("ftp://user@host:21?password=pass&passiveMode=true&delete=true").convertBodyTo(InputStream.class).process(archivoBS).to("file:C:\\Users\\juan.gaytan\\Desktop\\prueba2");
    }
}
My class 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提供了此链接,我更改了配置方法,现在看起来如下所示:

@Override
public void configure() throws Exception {
    from("ftp://user@host:21?password=pass&passiveMode=true&delete=true").streamCaching().convertBodyTo(InputStream.class).process(archivoBS).to("file:C:\\Users\\juan.gaytan\\Desktop\\prueba2");
}

我只需要添加.streamCaching()方法,效果非常好,希望这对其他人有所帮助。

它是什么类型的文件?文本文件?二进制文件?嗨,namphibian,这个文件是一个.txt文件。我可以认为,您正在关闭process方法上的InputStream,然后当您稍后使用Apache Camel保存到文件时,它已经关闭了,因此,没有内容。但我不知道你是否可以让InputStream保持打开状态。。。但是请做测试,是的,拉斐尔在做什么。另请参阅此常见问题解答:除了@ClausIbsen所说的之外,您可能正在修改处理器中的exchange负载。您能展示它的整个实现吗?显然,以前对任何敏感的事情都匿名。