我需要根据传入的消息构建一个csv文件。为此,我将以下内容附加到文件:
.toD("file://" + OUTPUT_PATH + "?FileName=${exchangeProperty.OUTPUT_FILENAME}" + "&FileExist=Append")
虽然这工作正常,但我遇到了一个问题。我还需要在CSV文件中包含一个标题行。现在我正在使用. mashall(). csv()编组成CSV格式,但这省略了标题。
虽然我可以创建一个CSV格式,标题为:
CsvDataFormat csvFormatWithHeader = new CsvDataFormat();
csvFormatWithHeader.setHeader(Arrays.asList(new String[] { "A", "B", "C", "D" }.clone()));
.marshall(csvFormatWithHeader)
这将为我添加的每一行添加标题行。因此,我想要实现的是仅在创建新文件时添加标题。
我尝试了两种方法,但都没有成功:
作为最后一个选择,我可以在文件关闭时添加头,但这感觉效率很低,因为我不知道该文件可能会变得多大。
如何使用Apache Camel 2.23.2实现这两种方法之一。
好的,最终使用一个标题,我能够让选项1工作。这就是我现在的路线:
.setProperty("OUTPUT_FILENAME",method(this, "determineOutputFilename()"))
.setHeader("fileExists", method(this, "outputFileExists"))
.choice()
.when(header("fileExists"))
.marshal().csv()
.endChoice()
.otherwise()
.marshal(csvFormatWithHeader)
.endChoice()
.end()
文件检查逻辑是(在route类中实现):
public boolean outputFileExists(@ExchangeProperty("OUTPUT_FILENAME") String fileName){
boolean fileExists = new File(PROCESSING_PATH + "/" + fileName).exists();
return fileExists;
}
问题内容: 我正在使用opencsv将Java bean写入带有标头的CSV文件中。文件名包含当前日期。如果用户在同一天第二次运行它,它将追加到文件中,但添加另一个标题行。 如何附加到文件但没有列标题。 问题答案: 好一个 在opencsv中进行编写时,我们并不怎么想追加内容,因为它可能存在风险(出问题了,您可能会破坏本来很好的文件),因此倾向于使用写入。 那就是说在sourceforge中打开一
问题内容: 我编写了一个Python脚本,用于合并两个csv文件,现在我想在最终的csv中添加标头。我尝试按照此处报告的建议进行操作,但出现以下错误:。解决此问题的最有效方法是什么? 这是我正在使用的代码: 问题答案: 该班预计 字典 的每一行。如果您只想编写一个初始标头,请使用常规并在标头的简单行中传递: 另一种方法是在跨数据复制时生成字典:
我有一个CSV文件,有五列和数百行。我想给每一列添加一个标题。例如 我已经尝试了下面的代码,它确实成功地添加了标题,但是,它也将所有列合并为一个。这不是我想要的 此代码将导致下表
问题内容: 我已经通过import语句从Objective C(针对目标“ MyApp”)成功调用了我的Swift类: 我现在创建了一个名为“ MyAppLite”的新目标 编译新目标时,出现错误,因为代码需要“ MyApp-Swift.h”,但是编译器正在创建“ MyAppLite-Swift.h” 因此,我需要为要编译的目标创建条件Swift / ObjC标头。 怎么做,还是有更好的办法? 问
我想读取多个.csv文件,并将其文件名的日期时间部分附加到列标题中。每个 csv 文件都包含在特定日期时间获取的数据。每个文件名都具有以下格式: yyyy-mm-DD _ hh-mm-ss _ someothertext 每个文件只包含一列数据。 我成功地将多个文件导入为数据帧列表,如下所示: 然后,我将这些文件连接成一个数据帧,这样每一列都包含来自其中一个文件的数据: 然而,这是我丢失文件名信息
我写了一个合并两个csv文件的Python脚本,现在我想在最后的csv中添加一个头。我试图遵循这里报告的建议,我得到了以下错误:。解决这个问题最重要的方法是什么? 以下是我正在使用的代码: