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

问题描述

这应该工作。它检查要合并的文件是否具有匹配的头。否则将引发异常。异常处理(关闭流等)已作为练习。

  1. String[] headers = null;
  2. String firstFile = "/path/to/firstFile.dat";
  3. Scanner scanner = new Scanner(new File(firstFile));
  4. if (scanner.hasNextLine())
  5. headers[] = scanner.nextLine().split(",");
  6. scanner.close();
  7. Iterator<File> iterFiles = listOfFilesToBeMerged.iterator();
  8. BufferedWriter writer = new BufferedWriter(new FileWriter(firstFile, true));
  9. while (iterFiles.hasNext()) {
  10. File nextFile = iterFiles.next();
  11. BufferedReader reader = new BufferedReader(new FileReader(nextFile));
  12. String line = null;
  13. String[] firstLine = null;
  14. if ((line = reader.readLine()) != null)
  15. firstLine = line.split(",");
  16. if (!Arrays.equals (headers, firstLine))
  17. throw new FileMergeException("Header mis-match between CSV files: '" +
  18. firstFile + "' and '" + nextFile.getAbsolutePath());
  19. while ((line = reader.readLine()) != null) {
  20. writer.write(line);
  21. writer.newLine();
  22. }
  23. reader.close();
  24. }
  25. writer.close();

解决方法

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

文件A

  1. header1,header2,header3
  2. one,two,three
  3. four,five,six

文件B

  1. header1,header3
  2. seven,eight,nine
  3. ten,eleven,twelve

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

  1. header1,six
  2. seven,twelve

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

猜你在找的技术问答相关文章

如何检查配对的蓝牙设备是打印机还是扫描仪(Android)
是否允许实体正文进行HTTP DELETE请求?
如何将ZipInputStream转换为InputStream?
java.util.logging Java 8中的变量
PowerMockito.doReturn返回null
Java中的RESTful调用
Swing / Java:如何正确使用getText和setText字符串
特殊字符和重音字符
Android Studio中的ndk.dir错误
错误“找不到主类”