Zwei Dateien vergleichen

Mutaro

Grünschnabel
Hi,

habe mir nun schon so einige Beiträge durchgelesen die mit dem Thema zu tun haben, bin leider trotzdem nicht auf die Lösung gekommen. Folgendes Problem: 2 Dateien werden eingelesen und sollen auf übereinstimmende Datensätze geprüft werden..... Bitte nicht lachen wenn ihr den Code dazu anschaut, im Moment werden nur beide Dateien eingelesen und in Tokens verarbeitet. Mach das erst seit ner Woche und bräucht da echt Hilfe.
Java:
import java.io.BufferedReader;
import java.io.FileReader;
import java.io.IOException;
import java.util.ArrayList;
import java.util.StringTokenizer;




public class TestFile1 {
				public static void main(String[] args) {
				FileReader fr = null;
				
				
				try{
					BufferedReader in = new BufferedReader(fr = new FileReader("Pfad.txt"));

					int zeilennummer = 0;
					for (String line; (line = in.readLine()) != null;zeilennummer++) {
						//Ausgabe der ganzen Zeile
						System.out.println(line);
						
						if (zeilennummer > 4)
						{
						
							
							int doppelpunkt = line.indexOf(":");
							if (doppelpunkt > 0)
							{	System.out.println(line.substring(0, doppelpunkt-1));}
							
							
							if (doppelpunkt > 0)
							{
								int leerzeichen = line.indexOf(" ", doppelpunkt);
								System.out.println(line.substring(doppelpunkt+7, leerzeichen));
							}
							
							
							
							if (doppelpunkt > 0)
							{
								ArrayList liste = new ArrayList();
							
								int position = 0;
								
								do
								{
									position = line.indexOf("H(", position + 1);
									
									if (position > 0)
									{
										System.out.println("Kanal: "+line.substring(position + 2, line.indexOf(")", position)));
									}
								}
								while (position > 0 && position <= line.length());
							}
						}
					}
				}
				
				catch (IOException e) {
					System.err.println(e);
				} 
				finally {
					if (fr != null);
					try {
						fr.close();
						} 
					catch (IOException e) {
					}
					
				}
					FileReader fr2 = null;
					//Zweite Datei einlesen
					try{
						BufferedReader in2 = new BufferedReader(fr2 = new FileReader("Pfad.csv"));
						
						int ZeilenNr = 0;
						
						for (String line2; (line2 = in2.readLine()) != null;ZeilenNr++) {				
							StringTokenizer tokenizer = new StringTokenizer(line2, " ;,, ");				
							
						
							int Zeichenlänge = line2.length();
							if(ZeilenNr > 3){
							while (tokenizer.hasMoreTokens()) {					
								
								if (Zeichenlänge == 9){
								System.out.println("Site: " + tokenizer.nextToken());				
								}		
								
								else if (Zeichenlänge == 1){
										System.out.println("Sektor: "+ tokenizer.nextToken());
									}
								
								
								else {
											System.out.println("Kanal:" + tokenizer.nextToken());
										}
								}
							
							}
						}
					}
					
					catch (IOException e) {
						System.err.println(e);
								} 
					
						finally {
						if (fr != null);
							try {fr.close();
								} 
							catch (IOException e) {
								}
						}
					
					
					
				}
}
 
Zuletzt bearbeitet von einem Moderator:
Benutze doch bitte die Code-Tags.
Desweiteren, wo liegt denn jetzt genau dein Problem? (Hab mir den Quellcode nicht angeschaut, werde ich auch nicht, bevor er nicht in Code-Tags eingebunden ist)

//Edit Danke Sascha :)
 
Zuletzt bearbeitet:
Hallo,

ich bitte dich, nächstes mal einen treffenderen Titel zu wählen, da dieses Thema vielleicht auch anderen Usern helfen kann. Ich war mal so frei und hab den Titel mal geändert.

Nutze auch nächstes mal die Code-Tags. Dazu kannst du entweder die '#' in der Toolbar nutzen oder die Code-Tags die ich bei dir eingetragen hab. Wenn du deinen Beitrag editierst, siehst die welche.

MFG

Sascha
 
Oh, entschuldigung war mein erster Beitrag in dem Board hier. Werde nächstes mal dran denken, danke fürs Ändern.
Also das Problem liegt nun beim Vergleichen der Dateien und eben ist mir aufgefallen dass der fr2 nicht wirklich funktioniert.... warum auch immer.


mfg
 
Moin,

erstmal würde ich aus dem Einlesevorgang eine Methode machen um redundanten Code zu vermeiden.

So, und um Missverständnisse zu vermeiden. Du hast Datei a, die hat Datensätzen, die mit einem ; getrennt sind. Und nun willst du gucken ob einer der Datensätze auch in Datei b vorkommt und wenn das so ist, gibt es für den Datensatz ein true zurück, ansonsten ein false, richtig? Kannst ja mal zum testen einen kleinen Teil von Datei a und Datei b posten.

Gruß
Christian
 
Moin...
ich wäre denn mal so frei weiterzufragen;-)
Irgendwie kommt mir die Aufgabe aus der Uni bekannt vor...verdammt lang her...sowas wie...welche abschnitte/worte aus märchen A kommen auch in Märchen B vor? ;-)

Ich würde mir also erstmal überlegen was identisch an den Datensätzen sein soll...also identische Worte, worte im kontext oder was auch immer!

wenn nur worte...recht easy...einfach beide dateien als string einlesen (sonderzeichen wie komma, punkt etc einfach mal überlesen(den wert dieser zeichen findest in jeder ascii tabelle..mal googeln)
, über beide nen tokenizer, erstes element tokenizer A mit allen TokenizerB per equals abgleichen , gefundene identische auf nen array setzen, wenn längere text teile überpfüft werden sollen noch länge des tokens und position merken (einfach ne Klasse basteln mit nem String, und zwei int's für position und länge), dann die Objekte im array speichern.

Zack bumm...schon solltest alle identischen zeichenketten mit deren position und länge haben.

der Zander
 
Ok ein kleines Beispiel... Inhalt Datei a (ist .csv)

508301009 3 1 15 1001,1002,1003,1004,1005,1006,1007,1016,1017,1018,1019,1020,1021,1022,1023

Und Datei B, Inhalt (txt)
509301183 1 0 1020 1 1020

Hab jetzt mal alles was aus Datei B durchs Programm rausgenommen wird bereits entfernt.

Irgendwie sollte jetzt je eine ZEile von B eingelesen werden und mit allen von A auf Übereinstimmungen abgeglichen werden.

@Zander

Nein leider sinds nur Zahlenfolgen, und das nächste Problem das mir gerade aufgefallen ist dass es zwei mal nur 1 Zeichen ist was heißt dass ich mit if bla == 1 Nicht weit kommen werde :(
 
Ah jo sorry hätte es auch gleich durch Zeilenumbruch verdeutlichen können sorry. Ja sind alles einzelne Zeichen bzw. Zeichenketten.
 
ok und wo ist dann das problem die beiden Arrays durchzugehen in der Art:

Code:
for(int i=0;i<Array1.length();i++){
 for(int x=0;x<Array2.length();x++){
   if(Array1[i] == Array2[x]){
       System.out.println("Wert: "+Array1[i]+" hat einen treffer gefunden!!");
       break;
    }
 }
}
 

Neue Beiträge

Zurück