ERLEDIGT
NEIN
NEIN
ANTWORTEN
7
7
ZUGRIFFE
1717
1717
EMPFEHLEN
-
Hi Leutz !
Ich hab ein kleines bis grösseres Problem, wie kann ich mit JAVA Textdateien einlesen und den Text anschließend bearbeiten !
Panzer
PS der eingelesene Text soll am Ende in eine Crossreferenz umgewandelt werden !
-
26.12.03 14:42 #2
- Registriert seit
- Jun 2002
- Ort
- Saarbrücken (Saarland)
- Beiträge
- 9.886
- Blog-Einträge
- 29
Servus!
Code :1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54
import java.io.BufferedReader; import java.io.File; import java.io.FileNotFoundException; import java.io.FileReader; import java.io.IOException; /* * Created on 26.12.2003 * * To change the template for this generated file go to * Window>Preferences>Java>Code Generation>Code and Comments */ /** * @author Administrator * * To change the template for this generated type comment go to * Window>Preferences>Java>Code Generation>Code and Comments */ public class Main { public static void main(String[] args) { new Main().doIt(); } /** * */ private void doIt() { // TODO Auto-generated method stub File file = new File("c://stub.log"); //hier Deine Datei angeben FileReader fr = null; try { fr = new FileReader(file); BufferedReader br = new BufferedReader(fr); String line = null; while ((line = br.readLine()) != null) { System.out.println(line); } br.close(); fr.close(); } catch (FileNotFoundException e) { // TODO Auto-generated catch block e.printStackTrace(); } catch (IOException e) { // TODO Auto-generated catch block e.printStackTrace(); } } }
Was meinst du damit?PS der eingelesene Text soll am Ende in eine Crossreferenz umgewandelt werden !
Gruß TomJava rocks!
How to become a good Java Programmer?
Does IT in Java and .Net
The only valid measurement of code quality: WTFs / minute
Blog
Xing
Twitter
-
Hallo
Ich hab noch ein kleines Problem mit dem Pfad ... kann ich da Irgenteinen nehmen was verlangt "File datei = new File(pfad);" bei pfad Eine direkte verzeichnis und datei angebe ******
Eine Crossreferenz ist ein sortiertes Inhaltsverzeichnis, das angibt welche Wörter in welchen Zeilen vorkommen!
Beispiel:
Kalle kaufte Gestern Brötchen
beim Bäcker. Gestern
Bäcker 2
beim 2
Brötchen 1
Gestern 1 2
Kalle 1
kaufte 1
PanzerGeändert von Panzer (26.12.03 um 22:46 Uhr)
-
27.12.03 17:29 #4
- Registriert seit
- Jun 2002
- Ort
- Saarbrücken (Saarland)
- Beiträge
- 9.886
- Blog-Einträge
- 29
Servus!
Code :1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 109 110 111 112 113 114 115 116 117 118 119 120 121 122 123 124 125 126 127 128 129 130 131 132 133 134 135 136 137 138 139 140 141 142 143 144 145 146 147 148 149 150 151 152 153 154 155 156 157 158 159 160
import java.io.BufferedReader; import java.io.File; import java.util.Arrays; import java.io.FileNotFoundException; import java.io.FileReader; import java.io.IOException; import java.util.HashSet; import java.util.Hashtable; import java.util.Iterator; import java.util.StringTokenizer; /* * Created on 27.12.2003 * * To change the template for this generated file go to * Window>Preferences>Java>Code Generation>Code and Comments */ /** * @author Administrator * * To change the template for this generated type comment go to * Window>Preferences>Java>Code Generation>Code and Comments */ public class CrossMain { public static void main(String[] args) { new CrossMain().doIt(); } /** * */ private void doIt() { // TODO Auto-generated method stub //Da wir jedes Wort nur einmal speichern wollen verwenden wir eineHashtable die für das jeweilige Wort auf unsere MyEntry Objekte abbildet. Hashtable ht = new Hashtable(); File file = new File("c://Test.txt"); FileReader fr = null; BufferedReader br = null; try { fr = new FileReader(file); br = new BufferedReader(fr); } catch (FileNotFoundException e) { // TODO Auto-generated catch block e.printStackTrace(); } //Die Zeile String line = null; Der StringTokenizer zerlegt uns den String in die einzelnen Wörter StringTokenizer tokenizer = null; //Hier mit sehen wir in welcher Zeile wir stehen int lineCnt = 0; try { while ((line = br.readLine()) != null) { lineCnt++; tokenizer = new StringTokenizer(line); while (tokenizer.hasMoreElements()) { String tmp = tokenizer.nextToken(); //ist das gefundene Wort schon in der Hashtable gespeichert? //wenn ja, besorge dir das MyEntry Objekt zu dem Begriff und füge ein Element zu dem Zeilen (Rows) Speicher hinzu ... -> CrossReferenz //Ist das Wort noch nicht in der HT, dann erstell ein Neues MyEntry Objekt,welches die Worte Kapselt und schreibe die Aktuelle Zeile in den Zeilenspeicher des MyEntry Objektes danach schreib Wert in die HT ... if (!ht.contains(tmp)) { MyEntry entry = new MyEntry(tmp); entry.getRows().add(new Integer(lineCnt)); ht.put(tmp, entry); } else { MyEntry entry = (MyEntry) ht.get(tmp); entry.getRows().add(new Integer(lineCnt)); } } } br.close(); fr.close(); } catch (IOException e1) { // TODO Auto-generated catch block e1.printStackTrace(); } Iterator iter = ht.keySet().iterator(); //Hier geben wir die Wörter und die dazu gehörigen zeilen Positionen aus ... while (iter.hasNext()) { String key = (String) iter.next(); MyEntry entry = (MyEntry) ht.get(key); System.out.println("Wort: " + entry.getStr()); Object[] oa = entry.getRows().toArray(); Arrays.sort(oa); for (int i = 0; i < oa.length; i++) { System.out.println(" " + ((Integer) oa[i]).intValue()); } } } //Die Klasse MyEntry Kapselt für uns die "Wörter" und hat einen Speicher für die ZeilenNr. da es vorkommen kann, das ein wort in einer Zeile zweimal vorkommt verwenden wir zum Speichern der zeilen angaben einen Hashset die eine Menge //im Mathematischen Sinn repräsentiert wobei ein element nur einmal erscheinen kann... class MyEntry { private String str; private HashSet rows; public String toString() { return str; } /** * @param tmp */ public MyEntry(String tmp) { str = tmp; rows = new HashSet(); // TODO Auto-generated constructor stub } public boolean equals(Object o) { return str.equals((String) o); } //diese Methode ist wichtig für das richtige Funktionieren unserer Hashtable ... public int hashCode() { return str.hashCode(); } /** * @return */ public HashSet getRows() { return rows; } /** * @return */ public String getStr() { return str; } /** * @param list */ public void setRows(HashSet set) { rows = set; } /** * @param string */ public void setStr(String string) { str = string; } } }
Gruß TomGeändert von Thomas Darimont (29.12.03 um 00:03 Uhr)
Java rocks!
How to become a good Java Programmer?
Does IT in Java and .Net
The only valid measurement of code quality: WTFs / minute
Blog
Xing
Twitter
-
kannst du das mit dem HashTable noch mal nen bissle ausführlicher erklären ! das wäre super !
MfG Panzer
PS kann man die "aktuelle" zeile nich auch mit ReadLineNumber bekommen !
-
29.12.03 11:54 #6
- Registriert seit
- Jun 2002
- Ort
- Saarbrücken (Saarland)
- Beiträge
- 9.886
- Blog-Einträge
- 29
Servus!
Lies dir das hier mal durch:
http://www.galileocomputing.de/openb...nerHashTabelle
Gruß TomJava rocks!
How to become a good Java Programmer?
Does IT in Java and .Net
The only valid measurement of code quality: WTFs / minute
Blog
Xing
Twitter
-
02.01.04 20:37 #7ixnay Tutorials.de Gastzugang
hey! ein interessantes thema!
aber kannst du bitte die funktion des MyEntry Objekts erklären?
Mein JBuilder zeigt mir dabei immer n Fehler
"Applet1.java": Symbol kann nicht aufgelöst werden: Klasse MyEntry in Klasse crossrefapplet.Applet1 in Zeile 54, Spalte 4
Oder kann man das mit nem Vektor irgendwie vereinfachen
-
Hallo Tom!
Köntest du die Klasse MyEntry noch mal genauer erklären ! Das wäre super !
MfG Panzer
Ähnliche Themen
-
Textdateien einlesen String als Seperator
Von Krikus im Forum C/C++Antworten: 1Letzter Beitrag: 06.07.09, 17:30 -
Einlesen von Textdateien und verarbeiten
Von lara86 im Forum C/C++Antworten: 24Letzter Beitrag: 07.06.09, 14:36 -
BufferedReader: Einlesen von Textdateien in ein JPanel
Von bocee83 im Forum Swing, Java2D/3D, SWT, JFaceAntworten: 4Letzter Beitrag: 27.10.05, 19:30 -
bin auch am Verzweifeln...Textdateien einlesen
Von Guntpat1981 im Forum C/C++Antworten: 2Letzter Beitrag: 23.01.05, 13:17 -
Daten aus mehreren Textdateien einlesen ! Geht das ?
Von Bombi im Forum Relationale DatenbanksystemeAntworten: 3Letzter Beitrag: 23.04.03, 14:45





Zitieren

Login





