当前位置: 首页 > 知识库问答 >
问题:

Apache Camel只读第一行

竺翰海
2023-03-14
    from("file:D:\\camel\\input?recursive=true&delete=true")
            .split().tokenize("'",1)
            .process(new CustomProcessor())
            .to("file:D:\\camel\\output\\${header.foldername}");

共有1个答案

姬振濂
2023-03-14

感谢@Claus和@Souciance的反馈。实际上,我遇到了另一个挑战,我收到的许多文件没有'\n'或'\r'作为分隔符,因此,即使读取单个like也可能像读取整个文件一样。我使用带有分隔符的扫描器实现了解决方案,如下所示。

我的路由器定义如下

@Override
public void configure() throws Exception {
    from("file:D:\\camel\\input?recursive=true&delete=true")
            .process(new CustomProcessor())
            .recipientList(header("foldername"));

}

处理器代码是

    @Override
    public void process(Exchange exchange) throws Exception {
         File data =  exchange.getIn().getBody(File.class);
        Scanner sc = new Scanner(data,"UTF-8");
        sc.useDelimiter("'");
        String folderPath="";
        while (sc.hasNext()){
            String line = (String) sc.next();
         //business logic
           break;

       }
          sc.close();
         String destDir = "file:D:\\camel\\output\\"+folderPath;
        exchange.getIn().setHeader("foldername",destDir);

     }
 类似资料:
  • 我正在使用camel-ftp从远程服务器获取文件。当文件被移动时,我需要读取第一行,这是一个头,并在路由的其余部分用它设置骆驼头。我需要为它构建一个自定义处理器吗?我想到了.split(),但它会解析文件中的每一行(这个文件很大)。

  • 我尝试使用Apache Camel(版本2.25.3)反应流和Spring Boot来读取一个大型csv文件,并使用Bindy解封这些行。这是“工作”,因为应用程序运行并检测文件,但我只看到流中文件的第一行。它似乎与Bindy相关,因为如果我从等式中去掉解组,我就可以在流中返回csv文件的所有行。我已经简化了这个问题,在这里演示了SO。我正在使用Spring Webflux来公开结果发布者。 所以

  • 我正在尝试向异步路由发送消息,但它不起作用。我刚刚在github上创建了一个项目来模拟这个问题

  • 我可以使用Apache POI只读取Excel文件的第一行吗?我不想读取整个文件,因为它有50,000行,读取最多需要10分钟(性能是一场灾难)。我通过文件上传获取字节。我的选项是字节数组或InputStream。现在我正在这样做:

  • 我正在使用apache camel cxf开发一个Web服务(肥皂),我遇到了这个错误。 Java . lang . illegalargumentexception:Part { http://blue print . camel . ngt . TN/}返回的类型应为[ltn . ngt . camel . blue print . WB _ subscriptions;,而不是org . A

  • 问题内容: 在我当前的程序中,一种方法要求用户输入产品描述作为输入。但是,当我以后尝试打印此信息时,仅显示节目的第一个单词。这可能是什么原因?我的方法如下: 因此,如果用户输入的是“带有橙味的汽水”,则只会产生“ 汽水”。 任何帮助将不胜感激! 问题答案: 替换为: