Ftp 骆驼式跳伞

Ftp 骆驼式跳伞,ftp,apache-camel,bindy,Ftp,Apache Camel,Bindy,我对骆驼apache有意见。我的csv文件中有LF和CRLF。LF出现在我的csv文件的值中。 当camel从ftp获取我的文件并将其放在我的桌面上时,LF不再存在。但是我需要LF字符来正确格式化我的csv,并将其与bindy组件合并 from("timer://products?fixedRate=true&period="+ TimeUnit.SECONDS.toMillis(30)) .pollEnrich()

我对骆驼apache有意见。我的csv文件中有LF和CRLF。LF出现在我的csv文件的值中。 当camel从ftp获取我的文件并将其放在我的桌面上时,LF不再存在。但是我需要LF字符来正确格式化我的csv,并将其与bindy组件合并

  from("timer://products?fixedRate=true&period="+ TimeUnit.SECONDS.toMillis(30))
            .pollEnrich()
            .simple("ftp://"+ftpUsername+"@"+ftpServer+"?password="+ftpPassword+"&passiveMode=true&stepwise=true&delay=1000&delete=true&include=.*sensopur_product\\.csv$")
            .process(exchange -> {
                System.out.println(exchange.getIn().getBody());
                String value = exchange.getIn().getHeader("CamelFileName").toString();
                if (value != null && !value.equals("")){
                    exchange.getIn().setHeader("nomFichier",value);
                }else {
                    exchange.getIn().setHeader("nomFichier","pas de fichier");
                }
                exchange.getIn().setBody(exchange.getIn().getBody(String.class));

            })
            .setHeader("nomFichier", simple("${in.header.CamelFileName}"))

            .to("file://../sensopur/src/main/resources/static")
           .end();

当apache在FTP服务器上获取我的文件时,如何保持LF?
谢谢。

在ftp用户行中添加
binary=true
。这将停止ftp使用者在从服务器收集文件时转换结束行字符

i、 e

.simple(“ftp://“+ftpUsername+”@“+ftpServer+”?password=“+ftpPassword+”&passiveMode=true&binary=true&stepwise=true&delay=1000&delete=true&include=include=.*sensopur\u product\\\.csv$”)

它是如何工作的?

选项
binary
是在FTP协议的二进制/ASCII模式之间切换的选项。默认情况下,camel将使用ASCII模式(
binary=false

在FTP协议的ASCII模式下,假设FTP客户端在不同的操作系统类型之间转换文件的结束行字符。例如,当文件从非Unix系统移动到Unix系统时,结束行字符将变为
LF


在FTP协议的二进制模式下,FTP客户端应该转换任何结束行字符。

您好hk6279,对我来说效果很好,谢谢。但是它是如何工作的呢?这是关于FTP协议的ASCII/二进制模式的概念。我在回答中加了一部分来解释这一点。