Hallo Leute,
ich habe ein kleines Problem. Ich möchte 2 csv Dateien vergleichen. Die Unterschiede möchte ich gerne in eine 3. csv Datei geschrieben haben, um später weiter damit zu arbeiten. Die Dateien sollen nach mehreren Faktoren vergleichen: Name und Adresse. Nur wenn In einer Zeile Name und Adresse gleich sind, ist der komplette Eintrag mit Telefonnummer, Email usw als gleich in eine Tabelle zu schreiben.
csv1
name adresse tel email
abc abc 123 a@b.de
cde cde 234 c@d.de
fgh fgh 567 f@g.de
csv2
name adresse tel email
abc abc 856 h@i.de
ztu uzt 687 c@d.de
uzt rtt 214 u@g.de
Herauskommen soll folgendes:
csv3
name adresse tel email
abc abc 123 a@b.de
abc abc 856 h@i.de
Hier der Code:
=====================================================
package csv;
import java.io.BufferedReader;
import java.io.File;
import java.io.FileReader;
import java.io.IOException;
import java.util.ArrayList;
public class Einlesen
{
private static ArrayList<String> al = new ArrayList<String>();
private static ArrayList<String> ladeDatei(String datName)
{
File file = new File(datName);
if (!file.canRead() || !file.isFile())
{
System.exit(0);
}
BufferedReader in = null;
try
{
in = new BufferedReader(new FileReader(datName));
String zeile = null;
while ((zeile = in.readLine()) != null)
{
al.add(zeile);
}
} catch (IOException e)
{
e.printStackTrace();
}
finally
{
if (in != null)
{
try
{
in.close();
}
catch (IOException e)
{
}
}
}
return al;
}
public static void main(String[] args)
{
String datei1 = "Mappe1.csv";
String datei2 = "Mappe2.csv";
Bearbeiten b = new Bearbeiten(datei1,datei2);
b.bearbeiteDatei(ladeDatei(datei1),ladeDatei(datei2));
}
}
=======================================================
package csv;
import java.util.ArrayList;
public class Bearbeiten
{
String s1;
String s2;
public Bearbeiten(String datei1, String datei2)
{
this.s1 = datei1;
this.s2 = datei2;
}
public String bearbeiteDatei(ArrayList<?> arrayList, ArrayList<?> arrayList2)
{
System.out.println(arrayList);
System.out.println(arrayList2);
if(arrayList.equals(arrayList2))
{
System.out.println("Die beiden Strings sind gleich");
}
else
{
System.out.println("Die beiden Strings sind nicht gleich");
}
return(toString());
}
}
=========================================================
Herauskommen tut aber immer folgendes: (Werte sind hier andere als oben im Beispiel)
[Name;PLZ;Straße;Ort, a;12345;abc;ertr, a;12345;abc;ertr, b;45678;fdsa;das, c;56489;dsad;dsag, d;47797;dsfaads;ag, Name;PLZ;Straße;Ort, a;12345;abc;ertr, a;12345;abc;ertr, u;53543;hgfh;dsw, z;44354;dsadlkgk;urte, i;75125;jhf;uzuu]
Nun meine Fragen:
-Wieso kommt "" vor Name heraus?
-Wieso hängt er beide aneinander und vergleicht sie dann, statt eins einzulesen, dann das andere einzulesen und dann zu vergleichen?
-Kann mir vielleicht Jemand den Code verbessern? bzw Helfen?
ich habe ein kleines Problem. Ich möchte 2 csv Dateien vergleichen. Die Unterschiede möchte ich gerne in eine 3. csv Datei geschrieben haben, um später weiter damit zu arbeiten. Die Dateien sollen nach mehreren Faktoren vergleichen: Name und Adresse. Nur wenn In einer Zeile Name und Adresse gleich sind, ist der komplette Eintrag mit Telefonnummer, Email usw als gleich in eine Tabelle zu schreiben.
csv1
name adresse tel email
abc abc 123 a@b.de
cde cde 234 c@d.de
fgh fgh 567 f@g.de
csv2
name adresse tel email
abc abc 856 h@i.de
ztu uzt 687 c@d.de
uzt rtt 214 u@g.de
Herauskommen soll folgendes:
csv3
name adresse tel email
abc abc 123 a@b.de
abc abc 856 h@i.de
Hier der Code:
=====================================================
package csv;
import java.io.BufferedReader;
import java.io.File;
import java.io.FileReader;
import java.io.IOException;
import java.util.ArrayList;
public class Einlesen
{
private static ArrayList<String> al = new ArrayList<String>();
private static ArrayList<String> ladeDatei(String datName)
{
File file = new File(datName);
if (!file.canRead() || !file.isFile())
{
System.exit(0);
}
BufferedReader in = null;
try
{
in = new BufferedReader(new FileReader(datName));
String zeile = null;
while ((zeile = in.readLine()) != null)
{
al.add(zeile);
}
} catch (IOException e)
{
e.printStackTrace();
}
finally
{
if (in != null)
{
try
{
in.close();
}
catch (IOException e)
{
}
}
}
return al;
}
public static void main(String[] args)
{
String datei1 = "Mappe1.csv";
String datei2 = "Mappe2.csv";
Bearbeiten b = new Bearbeiten(datei1,datei2);
b.bearbeiteDatei(ladeDatei(datei1),ladeDatei(datei2));
}
}
=======================================================
package csv;
import java.util.ArrayList;
public class Bearbeiten
{
String s1;
String s2;
public Bearbeiten(String datei1, String datei2)
{
this.s1 = datei1;
this.s2 = datei2;
}
public String bearbeiteDatei(ArrayList<?> arrayList, ArrayList<?> arrayList2)
{
System.out.println(arrayList);
System.out.println(arrayList2);
if(arrayList.equals(arrayList2))
{
System.out.println("Die beiden Strings sind gleich");
}
else
{
System.out.println("Die beiden Strings sind nicht gleich");
}
return(toString());
}
}
=========================================================
Herauskommen tut aber immer folgendes: (Werte sind hier andere als oben im Beispiel)
[Name;PLZ;Straße;Ort, a;12345;abc;ertr, a;12345;abc;ertr, b;45678;fdsa;das, c;56489;dsad;dsag, d;47797;dsfaads;ag, Name;PLZ;Straße;Ort, a;12345;abc;ertr, a;12345;abc;ertr, u;53543;hgfh;dsw, z;44354;dsadlkgk;urte, i;75125;jhf;uzuu]
Nun meine Fragen:
-Wieso kommt "" vor Name heraus?
-Wieso hängt er beide aneinander und vergleicht sie dann, statt eins einzulesen, dann das andere einzulesen und dann zu vergleichen?
-Kann mir vielleicht Jemand den Code verbessern? bzw Helfen?