将Java中的CSV文件与不同数量的列(令牌)进行比较

时间:2016-05-12 18:25:58

标签: java csv

我已阅读其他已回答/提问的问题,但没有人处理我的问题

我有2个CSV文件,我已经构建了一个程序来比较文件,方法是从File2中减去File1中的信息,将结果保存到File3。目前虽然我的程序只是将一个CSV文件与一列比较,另一个CSV文件与一列(CustomerName)进行比较。

这个程序有效!

我的问题是:我有没有办法将一个包含4列的CSV文件与包含1列的CSV文件进行比较并让它减去差异(就像我现在的代码那样)但不是只需减去column1中的差异,但减去差异和相应的行。

为了更好地解释,因为我很难说清楚我的问题,让我举一个例子:

让我们说File1.csv包含每个客户

Customer Phone  Email       Zip
Colt    123456  123@gmail   123456
Mary    321654  123@gmail   123456
John    789654  123@gmail   123456
Trey    987456  123@gmail   123456

并且假设File2.csv仅包含我想从File1.csv中删除的那些

Customer
Colt
John

我想要的是这个:

Customer Phone  Email       Zip
Mary    321654  123@gmail   123456
Trey    987456  123@gmail   123456

因此,只要了解CustomerName,我希望它不仅删除名称,还删除相应的行。

这可能吗?

对于任何好奇的人来说,这是我目前只使用1列CSV文件的代码。

package csvdatacompareapplication;

import java.io.*;
import java.util.ArrayList;

/* file1 - file2 = file3*/
public class CSVDataCompareApplication {
    public static void main(String args[]) throws FileNotFoundException, IOException
    {
        String path="C:\\Desktop\\";
        String file1="customerListAllCustomers.csv";
        String file2="customerListToRemove.csv";
        String file3="newCustomerList.csv";
        ArrayList<String> arrayList1=new ArrayList<String>();
        ArrayList<String> arrayList2=new ArrayList<String>();
        //ArrayList al3=new ArrayList();

        BufferedReader CSVFile1 = new BufferedReader(new FileReader(path+file1));
        String dataRow1 = CSVFile1.readLine();
        while (dataRow1 != null)
        {
            String[] dataArray1 = dataRow1.split(" , ");
            for (String item1:dataArray1)
            { 
               arrayList1.add(item1);
            }

            dataRow1 = CSVFile1.readLine(); // Read next line of data.
        }

         CSVFile1.close();

        BufferedReader CSVFile2 = new BufferedReader(new FileReader(path+file2));
        String dataRow2 = CSVFile2.readLine();
        while (dataRow2 != null)
        {
            String[] dataArray2 = dataRow2.split(" , ");
            for (String item2:dataArray2)
            { 
               arrayList2.add(item2);

            }
            dataRow2 = CSVFile2.readLine(); // Read next line of data.
        }
         CSVFile2.close();

         for(String bs:arrayList2)
         {
             arrayList1.remove(bs);
         }

         int size=arrayList1.size();
         System.out.println(size);

         try
            {
                FileWriter writer=new FileWriter(path+file3);
                while(size!=0)
                {
                    size--;
                    writer.append(""+arrayList1.get(size));
                    writer.append('\n');
                }
                writer.flush();
                writer.close();
            }
            catch(IOException e)
            {
                e.printStackTrace();
            }
    }
}

0 个答案:

没有答案