2017-07-24 98 views
0

我有一個駱駝的春季啓動應用程序,我嘗試從服務器使用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打開...但是請進行測試。 –

回答

1

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