public class CompareCSV {
public static void main(String args[]) throws FileNotFoundException, IOException {
String path = "C:\\csv\\";
String file1 = "file1.csv";
String file2 = "file2.csv";
String file3 = "file3.csv";
ArrayList<String> al1 = new ArrayList<String>();
ArrayList<String> al2 = new ArrayList<String>();
BufferedReader CSVFile1 = new BufferedReader(new FileReader("/C:/Users/bida0916/Desktop/macro.csv"));
String dataRow1 = CSVFile1.readLine();
while (dataRow1 != null) {
String[] dataArray1 = dataRow1.split(",");
for (String item1 : dataArray1) {
al1.add(item1);
}
dataRow1 = CSVFile1.readLine();
}
CSVFile1.close();
BufferedReader CSVFile2 = new BufferedReader(new FileReader("C:/Users/bida0916/Desktop/Deprecated.csv"));
String dataRow2 = CSVFile2.readLine();
while (dataRow2 != null) {
String[] dataArray2 = dataRow2.split(",");
for (String item2 : dataArray2) {
al2.add(item2);
}
dataRow2 = CSVFile2.readLine();
}
CSVFile2.close();
for (String bs : al2) {
al1.remove(bs);
}
int size = al1.size();
System.out.println(size);
try {
FileWriter writer = new FileWriter("C:/Users/bida0916/Desktop/NewMacro.csv");
while (size != 0) {
size--;
writer.append("" + al1.get(size));
writer.append('\n');
}
writer.flush();
writer.close();
} catch (IOException e) {
e.printStackTrace();
}
}
}
我想比較java中的兩個csv文件,並希望通過比較兩個文件的第一列從另一個csv文件中刪除一個csv文件的完整細節。目前我正在收到一個csv文件,只有一列只有所有細節混亂。如何根據一列來比較和編輯java中的兩個csv文件?
馬庫斯感謝輸入,但你可以請告訴我如何刪除基於元素上的完整的行,因爲現在一列被刪除,得到我和想要刪除完整的行 – Biswajit
@Biswajit我不確定是否正確理解了您的問題,但我更新了有關訪問CSV文件中其他數據列的答案。 //用'map.remove(key)'刪除整行。 //如果我的回答有幫助,請勾選勾號接受它。 –
感謝@markus你一直很有幫助,但我一直在嘗試太多的方式,但仍然無法達到預期的效果。你能告訴我如何刪除例如包含在名爲B的CSV文件中的50行包含2500行的C文件。實際上,我有一個包含50行的CSV文件,應始終與來自客戶端的新CSV文件進行比較,如果這些行在客戶端csv中存在,則應將其刪除。 – Biswajit