Я использую код ниже, чтобы сравнить два файла CSV file1 и file2. Где file1 - это файл, который нужно всегда сравнивать с file2, он выполняет ту частичную работу, которая мне нужна, но не выполняет всего. Здесь мне в основном нужно 3 сравнения.
1> Отсутствуют строки в файле1 по сравнению с файлом2 -> Не работает {также отображаются записи файла2, который не работает}
2> Дополнительная строка в файле1, которой нет в файле2 -> Рабочая
3> Несоответствие данных в file1 по сравнению с file2 -> Working {также отображать строки file1 и file2, которые не работают}
Кроме того, мне нужны комментарии, написанные внутри {}, чтобы они работали.
package com.mkyong;
import java.io.*;
import java.util.Scanner;
import java.util.ArrayList;
public class CSVComparison {
public static void main(String args[]) throws FileNotFoundException, IOException
{
String file1="qa_table_stats.csv";
String file2="prod_table_stats.csv";
String file3="TabStats_qa_prod.csv";
ArrayList al1=new ArrayList();
ArrayList al2=new ArrayList();
BufferedReader CSVFile1 = new BufferedReader(new FileReader(file1));
String dataRow1 = CSVFile1.readLine();
while (dataRow1 != null)
{
String[] dataArray1 = dataRow1.split("/n");
for (String item1:dataArray1)
{
al1.add(item1);
}
dataRow1 = CSVFile1.readLine(); // Read next line of data.
}
CSVFile1.close();
BufferedReader CSVFile2 = new BufferedReader(new FileReader(file2));
String dataRow2 = CSVFile2.readLine();
while (dataRow2 != null)
{
String[] dataArray2 = dataRow2.split("/n");
for (String item2:dataArray2)
{
al2.add(item2);
}
dataRow2 = CSVFile2.readLine(); // Read next line of data.
}
CSVFile2.close();
String bs = null;
for(Object o: al2)
{
bs = o.toString();
al1.remove(bs); // Checks for Additional Row in al1 and difference in rows in al1,
// but does not check for missing rows which are in bs but not in al1
}
int size=al1.size();
System.out.println(size);
System.out.println(bs);
try
{
FileWriter writer=new FileWriter(file3);
while(size!=0)
{
size--;
writer.append(""+al1.get(size));
writer.append('\n');
}
writer.flush();
writer.close();
}
catch(IOException e)
{
e.printStackTrace();
}
}
}