ERLEDIGT
NEIN
NEIN
ANTWORTEN
17
17
ZUGRIFFE
5629
5629
EMPFEHLEN
-
Hallo
Wie kann ich eine Datei in ein string lesen es Danach es auf bestimmte Wörter durchsuchen lassen.
Bitte um Rückmeldung.
MFG
-
05.10.07 08:36 #2Tobias 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
-
05.10.07 08:53 #3Tobias 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)
-
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
-
05.10.07 10:09 #5Tobias 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);
-
Danke, super nett von dir.
werde es versuchen.
MFG
-
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
-
Hy Peter
soll ich den ganzen Text in ein string laden oder meinst du jeden Part in ein extra string und dann sortieren.
MFG
-
@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.
Die allgemeine vorgehensweise ist bei beiden gleich.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.
- einlesen bis part vollendet
- neuen Vector/ArrayList aufmachen und bis Partende füllen
- einzelne Vector/ArrayLists sortieren lassen
- neu ausgeben / in Datei schreiben
-
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
-
hy
verstehe noch nicht so richtig wie.
MFG
-
05.10.07 12:24 #12Tobias 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
-
Hy topi dein suchprogramm habe ich versucht zu compalieren geht leider nicht.
eskann meine .txt Datei nicht öffnen.
MFG
-
05.10.07 13:51 #14Tobias 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
-
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
-
Datei einlesen durchsuchen!
Von yasukatakaya im Forum JavaAntworten: 3Letzter Beitrag: 31.10.07, 13:04 -
[VB 2005] binäre Datei nach String durchsuchen
Von themadman im Forum Visual Basic 6.0Antworten: 4Letzter Beitrag: 01.05.06, 18:00 -
Datei durchsuchen nach einem bestimmten String
Von Friesi im Forum CGI, Perl, Python, Ruby, Power ShellAntworten: 2Letzter Beitrag: 11.09.04, 12:08 -
[C++] Datei durchsuchen, danach Inhalt ausgeben/kopieren
Von grillse im Forum C/C++Antworten: 6Letzter Beitrag: 06.05.04, 16:39 -
HTML Datei auf String prüfen, danach öffnen!?
Von BigChicken im Forum PHPAntworten: 3Letzter Beitrag: 25.07.03, 10:33





Zitieren
Login





