tutorials.de Buch-Aktion 05/2012
ERLEDIGT
NEIN
ANTWORTEN
7
ZUGRIFFE
1717
EMPFEHLEN
  • An Twitter übertragen
  • An Facebook übertragen
AUF DIESES THEMA
ANTWORTEN
  1. #1
    Panzer Panzer ist offline Mitglied Bronze
    Registriert seit
    Dec 2003
    Beiträge
    45
    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 !
     

  2. #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();
            }
        }
    }


    PS der eingelesene Text soll am Ende in eine Crossreferenz umgewandelt werden !
    Was meinst du damit?

    Gruß Tom
     
    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

  3. #3
    Panzer Panzer ist offline Mitglied Bronze
    Registriert seit
    Dec 2003
    Beiträge
    45
    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

    Panzer
    Geändert von Panzer (26.12.03 um 22:46 Uhr)
     

  4. #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ß Tom
    Geä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

  5. #5
    Panzer Panzer ist offline Mitglied Bronze
    Registriert seit
    Dec 2003
    Beiträge
    45
    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 !
     

  6. #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ß Tom
     
    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

  7. #7
    ixnay 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
     

  8. #8
    Panzer Panzer ist offline Mitglied Bronze
    Registriert seit
    Dec 2003
    Beiträge
    45
    Hallo Tom!
    Köntest du die Klasse MyEntry noch mal genauer erklären ! Das wäre super !

    MfG Panzer
     

Ähnliche Themen

  1. Textdateien einlesen String als Seperator
    Von Krikus im Forum C/C++
    Antworten: 1
    Letzter Beitrag: 06.07.09, 17:30
  2. Einlesen von Textdateien und verarbeiten
    Von lara86 im Forum C/C++
    Antworten: 24
    Letzter Beitrag: 07.06.09, 14:36
  3. BufferedReader: Einlesen von Textdateien in ein JPanel
    Von bocee83 im Forum Swing, Java2D/3D, SWT, JFace
    Antworten: 4
    Letzter Beitrag: 27.10.05, 19:30
  4. bin auch am Verzweifeln...Textdateien einlesen
    Von Guntpat1981 im Forum C/C++
    Antworten: 2
    Letzter Beitrag: 23.01.05, 13:17
  5. Daten aus mehreren Textdateien einlesen ! Geht das ?
    Von Bombi im Forum Relationale Datenbanksysteme
    Antworten: 3
    Letzter Beitrag: 23.04.03, 14:45