java - 将 CSV 文件合并为一个没有重复标题的文件

标签 java csv

我有一些列标题相同的 CSV 文件。例如

文件A

header1,header2,header3
one,two,three
four,five,six

文件B

header1,header2,header3
seven,eight,nine
ten,eleven,twelve

我想合并它,以便将数据合并到一个文件中,标题在顶部,但其他任何地方都没有标题。

header1,header2,header3
one,two,three
four,five,six
seven,eight,nine
ten,eleven,twelve

实现这一目标的好方法是什么?

最佳答案

这应该有效。它检查正在合并的文件是否具有匹配的 header 。否则会抛出异常。异常处理(关闭流等)留作练习。

String[] headers = null;
String firstFile = "/path/to/firstFile.dat";
Scanner scanner = new Scanner(new File(firstFile));

if (scanner.hasNextLine())
    headers[] = scanner.nextLine().split(",");

scanner.close();

Iterator<File> iterFiles = listOfFilesToBeMerged.iterator();
BufferedWriter writer = new BufferedWriter(new FileWriter(firstFile, true));

while (iterFiles.hasNext()) {
  File nextFile = iterFiles.next();
  BufferedReader reader = new BufferedReader(new FileReader(nextFile));

  String line = null;
  String[] firstLine = null;
  if ((line = reader.readLine()) != null)
    firstLine = line.split(",");

  if (!Arrays.equals (headers, firstLine))
    throw new FileMergeException("Header mis-match between CSV files: '" +
              firstFile + "' and '" + nextFile.getAbsolutePath());

  while ((line = reader.readLine()) != null) {
    writer.write(line);
    writer.newLine();
  }

  reader.close();
}
writer.close();

关于java - 将 CSV 文件合并为一个没有重复标题的文件,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/18020364/

相关文章:

java - 从 XML 标签中读取特定字符串

csv - Pentaho 维度查找/更新

java - 使用 struts 2 下载为 csv

c# - 使用正则表达式替换 csv 列中的\r\n

python - 异常值去除 隔离森林

java - jdbc 领域、表单登录配置、Tomcat 和数据库连接错误

java - (Java) 获取第二个到最后一个正斜杠和最后一个正斜杠之后的字符串值

Java SQLite org.sqlite.JDBC 类路径损坏?

java - 如何在 JavaDoc 中显示示例代码,而无需手动复制/粘贴?

pandas - 如何使用 Pandas 将新的数据帧行 append 到 csv?