tutorials.de Buch-Aktion 05/2012
Seite 1 von 2 12 LetzteLetzte
ERLEDIGT
NEIN
ANTWORTEN
17
ZUGRIFFE
5629
EMPFEHLEN
  • An Twitter übertragen
  • An Facebook übertragen
AUF DIESES THEMA
ANTWORTEN
  1. #1
    Avatar von celloman
    celloman celloman ist offline Mitglied Gold
    Registriert seit
    Sep 2007
    Beiträge
    189
    Hallo

    Wie kann ich eine Datei in ein string lesen es Danach es auf bestimmte Wörter durchsuchen lassen.

    Bitte um Rückmeldung.

    MFG
     

  2. #2
    Tobias Köhler Tutorials.de Gastzugang
    Google liefert dir Antworten.... und die Suche hier im Forum sicherlich auch
    Stichwort Stream. Nur als Denkansatz, vll hilft dir das ja schon
     

  3. #3
    Tobias Köhler Tutorials.de Gastzugang
    Oder schau mal hier
    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
    
    package de.tutorials;
     
    import java.awt.Toolkit;
    import java.io.BufferedReader;
    import java.io.FileNotFoundException;
    import java.io.FileReader;
    import java.io.IOException;
    import java.util.StringTokenizer;
     
    import org.eclipse.swt.SWT;
    import org.eclipse.swt.widgets.Button;
    import org.eclipse.swt.widgets.Display;
    import org.eclipse.swt.widgets.Event;
    import org.eclipse.swt.widgets.Listener;
    import org.eclipse.swt.widgets.Shell;
     
    /**
     * @author tkoehler
     *
     */
    public class LeseDatei {
        
        public static Shell shell;
        public static Display display;
        public static Button btn_create;    
        
        /**
         * Die main-Methode ruft die Methoden auf
         * und verhindert das sofortige Schließen
         * des Fensters.
         * @param args werden nicht benötigt.
         */ 
        public static void main(String[] args)
        {
            createWidgets();
            createListeners();
            
            shell.open();
            
            while (!shell.isDisposed()) {
                if (!display.readAndDispatch()) 
                    display.sleep();
            }
            display.dispose();
        }       
    //-----------------------------------------------------------------------------//
        /**
         * In dieser Methode werden die Widgets erstellt.
         * shell.setLocation setzt das Fenster im Verhältnis
         * zur Auflösung in die Mitte des Displays
         */
        public static void createWidgets()
        {   
            //---- Fenster ----
            display = new Display();
            shell = new Shell(display);
            shell.setSize(600, 400);
            shell.setLayout(null);
            
            shell.setLocation((int)
                    ((Toolkit.getDefaultToolkit().getScreenSize().getWidth())/2
                            - (shell.getSize().x)/2),
                    (int)((Toolkit.getDefaultToolkit().getScreenSize().getHeight())/2 
                            - (shell.getSize().y)/2));
            
            //---- Buttons ----
            btn_create = new Button(shell, SWT.PUSH);
            btn_create.setBounds(20, 20, 100, 25);
            btn_create.setText("lese Text");        
        }   
    //-----------------------------------------------------------------------------//   
        /**
         * Erstellt die Listener für die Widgets.
         * Listener für btn_create 
         * ruft die Methode leseDatei() auf.
         * @see org.eclipse.swt.events.SelectionListener#widgetSelected(org.eclipse.swt.events.SelectionEvent)
         */
        public static void createListeners()
        {
            btn_create.addListener(SWT.Selection, new Listener()
            {
                public void handleEvent(Event arg0) 
                {
                    leseDatei();
                }
            });
        }   
    //-----------------------------------------------------------------------------//
        /**
         * Die Methode leseDatei() lädt die Datei lorem.txt in den Input
         * und kopiert den Text in die Variable text. Danach wird per 
         * StringTokenizer das nächste Wort mit "Lorem" verglichen. 
         * Wenn true, dann i um 1 erhöhen. Nach der Schleife ausgeben.
         * 
         */
        public static void leseDatei()
        {
            String text = "";
            try 
            {
                BufferedReader input = new BufferedReader(new FileReader("lorem.txt"));
                String line;
     
                while ((line = input.readLine()) != null) {
                    text = text + '\n' + line;
                }
                if (text.endsWith("\n"))
                    text = text + "\n";
     
                input.close();
                
            } catch (FileNotFoundException ex) {
                ex.printStackTrace();
            } catch (IOException ex) {
                ex.printStackTrace();
            }
            
            StringTokenizer st = new StringTokenizer(text);
            int i = 0;
            while(st.hasMoreTokens())
            {
                if(st.nextToken().equals("Lorem"))
                {
                    i++;
                    st.nextToken();
                }
            }
            System.out.println("In der Datei ist das Wort Lorem " + i + "mal enthalten");
            
        }
     
    }
    Geändert von Tobias Köhler (05.10.07 um 08:59 Uhr)
     

  4. #4
    Avatar von celloman
    celloman celloman ist offline Mitglied Gold
    Registriert seit
    Sep 2007
    Beiträge
    189
    Hy Tobi

    Kannst du mir vielleicht sagen wie ich eine .txt Datei sortieren Kann.

    Der Inhalt sieht so aus:

    Part: 1 (47)
    -3.605202648226e-001 -9.327513809436e-001 0.000000000000e+000
    9.327513809436e-001 -3.605202648226e-001 0.000000000000e+000
    0.000000000000e+000 0.000000000000e+000 1.000000000000e+000
    8.330508804029e-021 5.711266338201e-021 0.000000000000e+000
    Part: 1 (59)
    1.000000000000e+000 0.000000000000e+000 0.000000000000e+000
    0.000000000000e+000 1.000000000000e+000 0.000000000000e+000
    0.000000000000e+000 0.000000000000e+000 1.000000000000e+000
    -6.123031769112e-021 4.476963182155e+001 6.123031769112e-021
    Part: 2 (59 39)
    1.000000000000e+000 0.000000000000e+000 0.000000000000e+000
    0.000000000000e+000 1.000000000000e+000 0.000000000000e+000
    0.000000000000e+000 0.000000000000e+000 1.000000000000e+000
    0.000000000000e+000 0.000000000000e+000 0.000000000000e+000
    Part: 2 (59 41)
    1.000000000000e+000 0.000000000000e+000 0.000000000000e+000
    0.000000000000e+000 1.000000000000e+000 0.000000000000e+000
    0.000000000000e+000 0.000000000000e+000 1.000000000000e+000
    0.000000000000e+000 0.000000000000e+000 0.000000000000e+000
    Part: 2 (59 43)
    9.914069416794e-001 -7.411259383905e-017 1.308138983052e-001
    0.000000000000e+000 -1.000000000000e+000 0.000000000000e+000
    1.308138983052e-001 0.000000000000e+000 -9.914069416794e-001
    0.000000000000e+000 1.040000000000e+001 0.000000000000e+000
    Part: 1 (62)
    9.673187481361e-001 2.535634821980e-001 0.000000000000e+000
    -2.535634821980e-001 9.673187481361e-001 0.000000000000e+000
    0.000000000000e+000 0.000000000000e+000 1.000000000000e+000
    1.305851933321e+001 -5.047283707516e+000 0.000000000000e+000
    MaFrame 1
    Part: 1 (47)
    -5.019961254070e-001 -8.648698688684e-001 0.000000000000e+000
    8.648698688684e-001 -5.019961254070e-001 0.000000000000e+000
    0.000000000000e+000 0.000000000000e+000 1.000000000000e+000
    9.196769992950e-021 5.295625683229e-021 0.000000000000e+000
    Part: 1 (59)
    1.000000000000e+000 0.000000000000e+000 0.000000000000e+000
    0.000000000000e+000 1.000000000000e+000 0.000000000000e+000
    0.000000000000e+000 0.000000000000e+000 1.000000000000e+000
    -6.123031769112e-021 4.302870001717e+001 6.123031769112e-021
    Part: 2 (59 39)
    1.000000000000e+000 0.000000000000e+000 0.000000000000e+000
    0.000000000000e+000 1.000000000000e+000 0.000000000000e+000
    0.000000000000e+000 0.000000000000e+000 1.000000000000e+000
    0.000000000000e+000 0.000000000000e+000 0.000000000000e+000
    Part: 2 (59 41)
    1.000000000000e+000 0.000000000000e+000 0.000000000000e+000
    0.000000000000e+000 1.000000000000e+000 0.000000000000e+000
    0.000000000000e+000 0.000000000000e+000 1.000000000000e+000
    0.000000000000e+000 0.000000000000e+000 0.000000000000e+000
    Part: 2 (59 43)
    9.914069416794e-001 -7.411259383905e-017 1.308138983052e-001
    0.000000000000e+000 -1.000000000000e+000 0.000000000000e+000
    1.308138983052e-001 0.000000000000e+000 -9.914069416794e-001
    0.000000000000e+000 1.040000000000e+001 0.000000000000e+000
    Part: 1 (62)
    9.719689857615e-001 2.351091038598e-001 0.000000000000e+000
    -2.351091038598e-001 9.719689857615e-001 0.000000000000e+000
    0.000000000000e+000 0.000000000000e+000 1.000000000000e+000
    1.210817816416e+001 -7.027945755698e+000 0.000000000000e+000

    Den Inhalt möchte ich sortieren so zum Beispiel

    Part: 1 (47)
    -3.605202648226e-001 -9.327513809436e-001 0.000000000000e+000
    9.327513809436e-001 -3.605202648226e-001 0.000000000000e+000
    0.000000000000e+000 0.000000000000e+000 1.000000000000e+000
    8.330508804029e-021 5.711266338201e-021 0.000000000000e+000
    Part: 1 (47)
    -5.019961254070e-001 -8.648698688684e-001 0.000000000000e+000
    8.648698688684e-001 -5.019961254070e-001 0.000000000000e+000
    0.000000000000e+000 0.000000000000e+000 1.000000000000e+000
    9.196769992950e-021 5.295625683229e-021 0.000000000000e+000

    Part: 1 (59)
    1.000000000000e+000 0.000000000000e+000 0.000000000000e+000
    0.000000000000e+000 1.000000000000e+000 0.000000000000e+000
    0.000000000000e+000 0.000000000000e+000 1.000000000000e+000
    -6.123031769112e-021 4.476963182155e+001 6.123031769112e-021
    Part: 1 (59)
    1.000000000000e+000 0.000000000000e+000 0.000000000000e+000
    0.000000000000e+000 1.000000000000e+000 0.000000000000e+000
    0.000000000000e+000 0.000000000000e+000 1.000000000000e+000
    -6.123031769112e-021 4.302870001717e+001 6.123031769112e-021


    usw.

    Kannst du mir dabei ein Tipp geben

    MFG
     

  5. #5
    Tobias Köhler Tutorials.de Gastzugang
    Mit sortieren kenn ich mich nicht so gut aus, aber du könntest das per ArrayLists lösen. Also die Datei durchsuchen, für jeden Part ne ArrayList erstellen und diese dann sortieren mit
    Code java:
    1
    2
    
    Collections.sort(list, Collator.getInstance());
    System.out.println(list);
     

  6. #6
    Avatar von celloman
    celloman celloman ist offline Mitglied Gold
    Registriert seit
    Sep 2007
    Beiträge
    189
    Danke, super nett von dir.
    werde es versuchen.

    MFG
     

  7. #7
    RavenOnJ RavenOnJ ist offline Mitglied
    Registriert seit
    Oct 2007
    Beiträge
    17
    Zitat Zitat von Tobias Köhler Beitrag anzeigen
    Oder schau mal hier
    Code :
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    
    ....
     
        public static void leseDatei()
        {
            [B]String text = "";[/B]
            try 
            {
                BufferedReader input = new BufferedReader(new FileReader("lorem.txt"));
                String line;
     
                while ((line = input.readLine()) != null) {
                    [B]text = text + '\n' + line;[/B]
                }
                if (text.endsWith("\n"))
                    [B]text = text + "\n";[/B]
     
                input.close();
                
            } 
        ...
     
        }
    Bei solchen Schleifen-Konstrukten würde ich besser mit StringBuffer arbeiten, da String immutable ist, es wird also bei jeder +-Operation ein neues String-Objekt erzeugt:
    Code :
    1
    2
    3
    4
    5
    6
    7
    
    StringBuffer text = new StringBuffer("");
     
    ...
    while ((line = input.readLine()) != null) {
            text.append('\n').append(line);
    }
    ...

    Gruß
    Peter
     

  8. #8
    Avatar von celloman
    celloman celloman ist offline Mitglied Gold
    Registriert seit
    Sep 2007
    Beiträge
    189
    Hy Peter

    soll ich den ganzen Text in ein string laden oder meinst du jeden Part in ein extra string und dann sortieren.

    MFG
     

  9. #9
    Ronin-Jay Ronin-Jay ist offline Mitglied Gold
    Registriert seit
    Jun 2003
    Beiträge
    235
    @celloman:
    Ich möchte ja kein Spielverderber sein, aber vielleicht solltest Du bei einem Thread bleiben. Hier hast Du auch schon danach gefragt und zerix hat Dir bereits einen Hinweis mit nem Vector gegeben, Tobi jetzt mit ner ArrayList.

    Beispiel:
    Du liest ein. Dann steht Part(...) in dem String. Diesen String und alles was danach kommt schreibst du in einen Vector. Wenn du dann wieder Part(...) einliest, schreibst du das und alles was danach kommt in einen anderen Vector. Das dann so lange weiter, bis die Datei zu ende ist. Dann hast du alles in "Blöcken" und kannst machen was du willst.
    Die allgemeine vorgehensweise ist bei beiden gleich.
    - einlesen bis part vollendet
    - neuen Vector/ArrayList aufmachen und bis Partende füllen
    - einzelne Vector/ArrayLists sortieren lassen
    - neu ausgeben / in Datei schreiben
     

  10. #10
    RavenOnJ RavenOnJ ist offline Mitglied
    Registriert seit
    Oct 2007
    Beiträge
    17
    Zitat Zitat von celloman Beitrag anzeigen

    soll ich den ganzen Text in ein string laden oder meinst du jeden Part in ein extra string und dann sortieren.
    Mein Posting bezog sich nur auf das vorgeschlagene Schleifen-Konstrukt, wegen der Programmier-Hygiene . Ob es Sinn macht, den ganzen File in einen String einzulesen, und dann den String zu zerlegen, bezweifele ich.

    Ich kenne dein Sortierkriterium nicht, denke aber, es macht Sinn, die Zerlegung in die zu sortierenden Abschnitte schon beim Einlesen vorzunehmen und die Abschnitte dann in einer TreeMap abzuspeichern. Keys wären dann vermutlich die Teil-Strings, die das Token enthalten, gemäß dem sortiert werden soll (wenn ich mir deinen file so angucke, nehme ich mal an, die Keys sind keine reinen Zahlen). Dafür müßtest du dann aber vermutlich noch einen Comparator<String> implentieren.

    Gruß
    Peter
     

  11. #11
    Avatar von celloman
    celloman celloman ist offline Mitglied Gold
    Registriert seit
    Sep 2007
    Beiträge
    189
    hy

    verstehe noch nicht so richtig wie.

    MFG
     

  12. #12
    Tobias Köhler Tutorials.de Gastzugang
    Um eine Aufgabe zu lösen, gibt es immer viele Wege. Genug Infos hast du nun eigentlich, jetzt liegt es an dir, das umzusetzen. Im Grunde hast du sogar schon den Code, jedenfalls die wesentlichen Teile. Jetzt musst du es nur noch ein wenig modifizieren
     

  13. #13
    Avatar von celloman
    celloman celloman ist offline Mitglied Gold
    Registriert seit
    Sep 2007
    Beiträge
    189
    Hy topi dein suchprogramm habe ich versucht zu compalieren geht leider nicht.

    eskann meine .txt Datei nicht öffnen.

    MFG
     

  14. #14
    Tobias Köhler Tutorials.de Gastzugang
    Bei mir befindet sie sich im Hauptverzeichnis des Projektes. Vll ist es leichter für dich, wenn du es so machst:
    Code java:
    1
    
    BufferedReader input = new BufferedReader(new FileReader("C:\\lorem.txt"));

    Natürlich muss dann unter Laufwerk C auch diese Datei vorhanden sein
    Außerdem solltest du gucken, ob du die Datei nicht vll noch geöffnet hast
     

  15. #15
    Avatar von celloman
    celloman celloman ist offline Mitglied Gold
    Registriert seit
    Sep 2007
    Beiträge
    189
    Bekomme diese Meldung

    init:
    deps-jar:
    Deleted 1 out of date files in 0 seconds
    Compiling 1 source file to C:\Dokumente und Einstellungen\mcelik\Desktop\Neuer Ordner (2)\Neuer Ordner\neuu\test\build\classes
    compile:
    run:
    In der Datei ist das Wort Lorem 0mal enthalten
    BUILD SUCCESSFUL (total time: 0 seconds)

    Das was rot geschrieben ist kommt immer ohne die Datei geöffnet zu haben.

    MFG
     

Ähnliche Themen

  1. Datei einlesen durchsuchen!
    Von yasukatakaya im Forum Java
    Antworten: 3
    Letzter Beitrag: 31.10.07, 13:04
  2. [VB 2005] binäre Datei nach String durchsuchen
    Von themadman im Forum Visual Basic 6.0
    Antworten: 4
    Letzter Beitrag: 01.05.06, 18:00
  3. Datei durchsuchen nach einem bestimmten String
    Von Friesi im Forum CGI, Perl, Python, Ruby, Power Shell
    Antworten: 2
    Letzter Beitrag: 11.09.04, 12:08
  4. Antworten: 6
    Letzter Beitrag: 06.05.04, 16:39
  5. Antworten: 3
    Letzter Beitrag: 25.07.03, 10:33