Как объединить два csv-файла с одинаковыми столбцами заголовка в другой csv-файл с помощью Java

#java #performance #csv

#java #Производительность #csv

Вопрос:

csv-файл 1:

 a|b|c
a|a|a
b|b|b
  

csv-файл 2:

 a|b|c
c|c|c
d|d|d
  

выходной csv-файл:

 a|b|c
a|a|a
b|b|b
c|c|c
d|d|d
  

вот мой код, который я пытался объединить, но заголовок повторяется дважды:
и когда дело доходит до объединения двух файлов в один альтернативный csv-файл, я также сталкиваюсь с той же проблемой, что и выше, столбцы заголовка повторяются каждый раз, что я должен делать, чтобы игнорировать это.
вот мой код ниже

   public static void main(String[] args) throws IOException  
{ 
    // PrintWriter object for file3.txt 
    PrintWriter pw = new PrintWriter("file3.txt"); 

    // BufferedReader object for file1.txt 
    BufferedReader br1 = new BufferedReader(new FileReader("file1.txt")); 
    BufferedReader br2 = new BufferedReader(new FileReader("file2.txt")); 


    String line1 = br1.readLine(); 
    String line2 = br2.readLine(); 

    // loop to copy lines of  
    // file1.txt and file2.txt  
    // to  file3.txt alternatively 
    while (line1 != null || line2 !=null) 
    { 
        if(line1 != null) 
        { 
            pw.println(line1); 
            line1 = br1.readLine(); 
        } 

        if(line2 != null) 
        { 
            pw.println(line2); 
            line2 = br2.readLine(); 
        } 
    } 

    pw.flush(); 

    // closing resources 
    br1.close(); 
    br2.close(); 
    pw.close(); 
  

как пропустить столбец заголовка в выходном файле

Комментарии:

1. Итак, вам нужен файл, содержащий только уникальные строки всех входных файлов?

2. Отсортированы ли входные файлы? Важен ли порядок строк в выходном файле?

3. нет, порядок не важен, но данные не следует пропускать, если у них есть дубликаты, их не следует пропускать

4. я добавил другой код с двумя файлами, объединенными в один файл, также возникает та же проблема, как игнорировать столбец заголовка

Ответ №1:

Просто пропустите первые строки второго и последующих CSV-файлов:

     for (int i = 0; i < fileNames.length; i  ) { 
        System.out.println("Reading from "   fileNames[i]); 

        File f = new File(dir, fileNames[i]);

        BufferedReader br = new BufferedReader(new FileReader(f));

        String line = br.readLine();
        if (i > 0) 
              line = br.readLine(); //just skip the first line

        while (line != null) {
            pw.println(line); 
            line = br.readLine(); 
        } 

        pw.flush(); 
    }