Datei zeilenweise in Strings speichern

Status
Nicht offen für weitere Antworten.
G

Guest

Gast
Die Überschrift sagt eigentlich schon alles über meinen Wunsch!

Also ich habe das Problem, dass ich mir bereits mehrere Dateien angelegt habe, die wie folgt aufgebaut sind:

gehen - to go
retten - to save
leben - to live
atmen - to breath
lernen - to learn

Nun würde ich gern über folgende Befehle, diese Dateien Verwenden:

angenommen F0001 = "gehen - to go"

Code:
int index = F0001.indexOf( '-' );                       //wäre dann 7
index = index + 4;                                          //um index hinter das "to" zu bekommen
String E0001 = F0001.substring( index );          //String E0001 = "go"

Das Problem dabei ist eben nur, dass ich die Zeilen einzeln auslesen muss, sonst klappt das konzept nicht und ich muss nochmal neu anfangen, zu schreiben :(
 
G

Guest

Gast
a) Danke für die schnelle Antwort!

b) Wusste ich aber selbst auch schon...

c) Bringt mich das an mein Ziel?

Ich möchte ja jede bereits in meiner Datei gespeicherten Zeile in einen einzelnen String laden, also:

"gehen - to go" in Sting s1
"retten - to save" in Sting s2
"leben - to live" in String s3
"atmen - to breath" in String s4
"lernen - to learn" in String s5

.
.
.
bis ca String s40...
 

The_S

Top Contributor
Achso, dann hatte ich dein Problem missverstanden. Dachte du wolltest eine Datei Zeile für Zeile in einen String speichern und nicht jede Zeile in einen.

Wenn du weißt wie viele Zeilen deine Textdatei hat, dann verwende ein Array. Ansonsten eine Collection deiner Wahl. z. B.:

Code:
Vector<String> datei = new Vector<String>();
BufferedReader buffy = new BufferedReader(new FileReader("deineDate.txt"));
String temp = null;
while ((temp = buffy.readLine()) != null) {
   datei.add(temp);
}
 
G

Guest

Gast
Wie werden dann die einzelnen Strings benannt?

temp1, temp2, temp3?
 

The_S

Top Contributor
Garnicht, die sind in deiner Collection und du kannst sie über den Index abfragen

Code:
System.out.println(datei.getElementAt(0));
 

EOB

Top Contributor
das nuetzt aber nix, wenn man sowas will wie:
Code:
String 1 = zeile1
String 2 = zeile2

und so weiter. das ginge dann wohl nur mit reflection?

gruesse
 

The_S

Top Contributor
Mørketid hat gesagt.:
das nuetzt aber nix, wenn man sowas will wie:
Code:
String 1 = zeile1
String 2 = zeile2

und so weiter. das ginge dann wohl nur mit reflection?

gruesse

Warum sollte man sowas wollen? :shock:
 

EOB

Top Contributor
was weiss ich..er wills halt so. und manchmal braucht man das schon....aber imho meint er es so, wie ich es oben schrieb.

gruesse
 

The_S

Top Contributor
Evtl. kennt er auch einfach nur nichts anderes ;) . Und wenn man bedenkt, dass mein Code kürzer und einfacher zu verstehen ist, sollte die Wahl auch leicht fallen :) .
 
G

Guest

Gast
Der Code wird wahrscheinlich sehr viel kürzer ;)

kurze Frage noch dazu:

was muss ich dazu noch importieren.. mein Compiler meckert:

Code:
Vector<String> datei = new Vector<String>();
^                          ^
cannot find symbol
symbol: class Vector
 
G

Guest

Gast
mhh..

jetzt meckert der wegen:

Code:
symbol  : method getElementAt(int)
location: class java.util.Vector<java.lang.String>
	  System.out.println(datei.getElementAt(0));
	                          ^
 

KSG9|sebastian

Top Contributor
wann braucht man jemals ne dynamische anzahl an variablen, also
String s1 - sn? Mir fällt kein Anwendungsfall ein wo das auch nur annähernd Sinn machen würde.

Code:
for($i=0; $i<100; $i++){
  $$i = "hallo nr. " . $i;
}
echo $45; // hallo nr. 45

grusliger gehts wohl kaum noch :)

und wenn ich das so mach hab ich
a) übersichtlicheren code
b) keine probleme mit überschriebenen variablen (vielleicht nenn ich später noch ne variable $1 oder $a oder so..)


Code:
List<String> l = new ArrayList<String>();
for(int i=0; i<100; i++)7
  l.add("hallo nr." + i);
}
System.out.println(l.get(45);

Da ist mir doch sowas lieber :)
 

The_S

Top Contributor
Tatsache, die Methode heißt get bzw. elementAt. getElementAt ist absoluter Schwachsinn. Sry, mein Fehler :oops: !
 

Leroy42

Top Contributor
Anonymous hat gesagt.:
mhh..

jetzt meckert der wegen:

Code:
datei.getElementAt(0));

Das war ein Schreibfehler Hobbit's. Die Methode heißt einfach nur get

Mørketid hat gesagt.:
was weiss ich..er wills halt so.
Typischer Fall von er weiß nicht was er will.

Das geht vielen Anfängern (mich nicht ausgeschlossen) so, daß sie,
solange sie noch das Konzept von Arrays und Listen nicht kennen,
irgendwie auf die Idee von durchnumerierten Variablen kommen.
 

Leroy42

Top Contributor
Anonymous hat gesagt.:
^^ kein Ding
Wie wäre es denn jetzt richtig?

So, wie es Hobbit gepostet hat.

Zum Finden deiner Vokabeln kannst du den Vector (besser ArrayList) auch
angenehmer durchlaufen:

Code:
for (String übersetzung : übersetzungen)
  if (übersetzung.indexOf(meinSuchwort) != -1) {
    // Hier die Übersetzung rausfriemeln
  }
 
G

Guest

Gast
Also nochmal 'ne kurze Zusammenfassung:


Code:
BufferedReader buffy = new BufferedReader(new FileReader("C:\\Test\\Test.asd"));
String temp = null;
while ((temp = buffy.readLine()) != null) 
{
  datei.add(temp);
  for (String datei : datei)
  {
    if (datei.indexOf(gehen) != -1) 
    {
      int index = datei.indexOf( '-' );
      index = index + 4;
      loesung = datei.substring( index );
      System.out.println(loesung);
    }
  }
}


Würde das Funktionieren, wenn wir die Tabelle annehmen?

gehen - to go
retten - to save
leben - to live
atmen - to breath
lernen - to learn
 

FelixB

Bekanntes Mitglied
so funktioniert es definitiv nicht, weil du 'gehen' in Anführungszeichen setzen musst.

außerdem hast du da ne Schleife doppelt. Du liest eine Zeile ein, fügst diese Zeile in die Struktur "datei" (was auch immer das sein mag) ein und durchsuchst jetzt die komplette Struktur "datei" nach 'gehen'.

meine Empfehlung:
Code:
while( (temp = buffer.readLine()) != null) 
{
if(temp.indexOf("gehen") != -1) {
...
}
}
[/code]
 

The_S

Top Contributor
Kommt darauf an was du für eine Ausgabe haben möchtest, ich würde aber mal sagen, dass die for schleife nach die while schleife muss und nicht rein.
 
G

Gast

Gast
habe noch ein problem entdeckt!

also ich habe die datei jetzt über RadomAccessFile geöffnet (Gründe: a) ist mir bekannt b) funktioniert auch ;))

Code:
int index = info.indexOf("laufen");
index = index + 6;
String laufen = info.substring(index);
System.out.println(laufen);

Eigentlich sollte er jetzt nur das Wort "laufen" ausspucken..
Leider wirft er aber die komplette Tabelle mit aus..
 
G

Guest

Gast
Hier nochmal alles relevante:


Code:
RandomAccessFile patient;
p = new RandomAccessFile( "Datei-Pfad", "r" );
for ( String inf; (inf=p.readLine()) != null; )
{      
  int ix = inf.indexOf("gehen");
  ix = index + 9;
  String first = inf.substring(index);
  System.out.println(first);   
}

und wie gesagt, der System.out.println-Befehl liefert die komplette Tabelle!
Das einzige, was sich ändert ist, dass der zeile, in der voher das "gehen - to go" steht, dann letztlich nurnoch "to go" steht... ich möchte in dem String "first" aber nur "to go" stehen haben und nicht zusätzlich den rest der Tabelle...
 

Leroy42

Top Contributor
Du vermischst ja immer noch das Einlesen und das Suchen. :shock:

Lies erst alle Zeilen ein und speichere sie.

Danach kannst du die Übersetzungen beliebig of durchsuchen
und nur wenn indexOf() einen Wert != -1 liefert hast du deine
gesuchte Zeile überhaupt gefunden.

Ich wundere mich, warum deine Lösung nicht auch ArrayIndexOutOfBounds-Exceptions wirft-. ???:L
 

FelixB

Bekanntes Mitglied
das ist definitiv nicht alles relevante. Was ist "index"?

sag doch bitte nochmal in Ruhe, was du genau möchtest. Wieso hast du "gehen" hard codiert? Du willst doch nicht immer "gehen" ausgeben...

und was soll das mit dem "ix = index + 9"?



ich würde sagen: gib uns bitte mal den KOMPLETTEN Quellcode sowie die Ein- und Ausgabe.
 

KSG9|sebastian

Top Contributor
du willst pro zeile ein eintrag haben?
dann
-buffered reader
-reader.readLine() einlesen
-in liste speichern

nach nem wort suchen:
-liste durchlaufen
-auf jeden eintrag eintrag.indexOf(..) != -1 anwenden
-falls nicht -1 = ergebnis gefunden

würd dir raten das besser zu kapseln, z.b. ne Klasse mit zwei Variablen: deutschesWort, englischesWort oder so
das vereinfacht das ganze
oder ne map mit dem deutschen wort als key
 

Leroy42

Top Contributor
FelixB hat gesagt.:
und was soll das mit dem "ix = index + 9"?

Korrekter:

Code:
ix = index + "gehen".length() + 4;
:cool:

Gast will damit auf die englische Übersetzung seines hardkodierten Testworts positionieren.
 
G

Guest

Gast
das ist definitiv nicht alles relevante. Was ist "index"?

sag doch bitte nochmal in Ruhe, was du genau möchtest. Wieso hast du "gehen" hard codiert? Du willst doch nicht immer "gehen" ausgeben...

und was soll das mit dem "ix = index + 9"?



ich würde sagen: gib uns bitte mal den KOMPLETTEN Quellcode sowie die Ein- und Ausgabe.



Also.. Ich hab vor einer halben Ewigkeit angefangen medizinische Begriffe in txt-Dateien ab zu sichern. Mittlerweile ist daraus ein hübsches Archiv geworden und nun habe ich mir mit meinen notdürftigen Java-Kenntnissen gedacht, ich hau da Mal ein kleines Programm drüber. Zur Vereinfachung für das Forum, hab ich als Beispiel ein Deutsch-Englisch-Wörterbuch genommen, vom Prinzip ändert sich da nicht viel!

statt Einträgen wie:

Apoplex - Hirnschlag (Volksmund: Schlaganfall) => plötzlichen Durchblutungsstörung im Gehirn

habe ich vereinfachte Begriffe wie eben:

gehen - to go

Das bekomme ich hin und es ist so weit auch alles im grünen!

Die Oberfläche für dieses Programm hab ich auf ner alten Schuldiskette gefunden, nicht schön, aber selten. Da diese Oberfläche "damals" auch schon einen String ausgelesen hat und ich keine Ahnung hab, wie sich ein anderes Muster auf den Rest auswirkt, würde ich es auch gern bei einem String belassen. Also habe ich letztenendes txt-Dateien die inhaltlich wie folgt aussehen:

Begriff1 - Erklärung1
Begriff2 - Erklärung2
Begriff3 - Erklärung3
Begriff4 - Erklärung4

Nun möchte ich nur eine Hilfestellung erhalten, um auf die Eingabe von z.B. Begriff3, die Ausgabe Erklärung3 in Form eines Strings zu erhalten.

Meine Idee war deshalb folgende:

Code:
RandomAccessFile medik;
medik = new RandomAccessFile( "C:\\Programme\\Studium\\Medikamente.txt", "r" ); //Einlesen der Datei
for ( String info; (info=medik.readLine()) != null; )
{     
  int index = info.indexOf(Begriff); //Vordefinierten Begriff aus der Oberfläche
  index = index + 9; //index-Wert hinter den Begriff schieben (da ich alles in Tabellenform habe, 
                     //                                        sind die Begriffszeichen immer gleich)
  String first = info.substring(index); //Informationsaufnahme von der Position des index-Wertes, 
                                        //also nur die dazugehörige Erklärung
  System.out.println(first); // Ausgeben der Erklärung, für erste Überprüfung beim programmieren
}


Hoffe, das war jetzt ein wenig ausführlicher.
 

The_S

Top Contributor
Code:
HashMap<String, String> hash = new HashMap<String, String>
String temp = null;
String[] ar = null;
BufferedReader buffy = new BufferedReader(new FileReader("deine.txt"));
while ((temp = buffy.readLine()) != null) {
   ar = temp.split("-"); // Ich gehe davon aus, dass - dein Trennzeichen ist
   hash.put(ar[0].trim(), ar[1].trim());
}
System.out.println(hash.get("Apoplex"));
 

KSG9|sebastian

Top Contributor
hast du mal überlegt das ganze so anzupassen dass in der Datei immer Key/Value-Paare stehen?

Begriff1 = Erklärung1
Begriff2 = Erklärung2
Begriff3 = Erklärung3

Das würd's wesentlich vereinfachen. Dann kannst du nämlich n Properties-Objekt verwenden.
Beispiel

Datei c:\Begriffe.txt
Begriff1 = Erklärung1
Begriff2 = Erklärung2
Begriff3 = Erklärung3

Code

Code:
Properties begriffe = new Properties();
public void einlesen(){
  begriffe.load(new FileInputStream(new File("c:\\begriffe.txt")));
}
public String getErklaerung(String begriff){
  return begriffe.getProperty(begriff);
}
Aufruf z.B.

Code:
einlesen();
System.out.println("gehen"); //Erklärung für gehen wird ausgegeben, in deinem fall "to go"
 
Status
Nicht offen für weitere Antworten.
Ähnliche Java Themen
  Titel Forum Antworten Datum
N Datei Zeilenweise Einlesen, Versteckte Zeichen Allgemeine Java-Themen 5
M Parameter-Datei einlesen (zeilenweise); Dateiintegrität Allgemeine Java-Themen 7
R Datei zeilenweise lesen und schreiben Allgemeine Java-Themen 6
FoolMoon Datei zeilenweise einlesen, aber nicht die erste Zeile! Allgemeine Java-Themen 3
J Mit Scanner-Klasse eine Datei zeilenweise einlesen und nur bestimmte Zeichen abfragen Allgemeine Java-Themen 11
H Datei (zeilenweise) einlesen Allgemeine Java-Themen 3
J Zeilenweise in Datei schreiben/auslesen Allgemeine Java-Themen 3
kodela StatusBar-Anzeigen auch in Log-Datei ausgeben Allgemeine Java-Themen 3
G Maven Projekt JAR-Datei Allgemeine Java-Themen 6
E XML - Datei Darstellung in IntelliJ als Baum Allgemeine Java-Themen 2
Thomasneuling Java Jar datei erstellen, von Projekt, dass auch Javafx Dateien, FXML Dateien und CSS Dateien, sowie Bilder enthält? Allgemeine Java-Themen 14
D Erste Schritte Mp3 Datei kann nicht von der Festplatte geöffnet werden - mit ChatGPT erstellt Allgemeine Java-Themen 7
J Filenotfoundexception obwohl Datei existiert Allgemeine Java-Themen 6
M Java Überprüfen ob .exe-Datei bereits ausgeführt wird Allgemeine Java-Themen 2
S .exe Datei/Programm auslesen? Allgemeine Java-Themen 2
E Datei verschoben Event Allgemeine Java-Themen 3
D Datei mit "Kohsuke GitHub API" in Repository hochladen Allgemeine Java-Themen 2
S Bookmark HTML Datei einlesen, alle Links erhalten und manche editieren..? (aktuell JSoup) Allgemeine Java-Themen 4
melaniemueller Einzelne Zeile aus einer txt Datei in einem String speichern Allgemeine Java-Themen 12
G JavaFX Maven Projekt als .exe Datei exportieren Allgemeine Java-Themen 10
J (Geplante) Änderungen an einer Datei vorübergehend speichern und anwenden? Allgemeine Java-Themen 12
Neumi5694 Datei komprimiert Allgemeine Java-Themen 6
_user_q Obfuscate einer .jar-Datei mit ProGuard? Allgemeine Java-Themen 2
_user_q Verknüpfung einer .jar-Datei (liegt z. B. auf dem Desktop) im Autostart-Ordner erstellen? Allgemeine Java-Themen 20
E java mithilfe url .jar datei öffnen Allgemeine Java-Themen 9
E Java .exe Datei mit args starten Allgemeine Java-Themen 2
W Bilder werden in App mit Jar-Datei nicht angezeigt Allgemeine Java-Themen 15
Master3000 Java Datei mehrmals einlesen Allgemeine Java-Themen 4
M Excel Datei Erstellen Allgemeine Java-Themen 2
E Input/Output Eigene Datei mit java öffnen Allgemeine Java-Themen 9
R Sonderzeichen aus Datei einlesen und in Datei ausgeben. Allgemeine Java-Themen 17
Tobero Download .jar von github lädt kaputte Datei runter Allgemeine Java-Themen 3
P Bat Datei in Java ausführen Allgemeine Java-Themen 2
S Verwendet Programmiersprache aus Quellcode - Datei ermitteln Allgemeine Java-Themen 6
T Problem beim Umwandeln in eine Jar-Datei Allgemeine Java-Themen 3
J Jar-Datei ausführen Allgemeine Java-Themen 7
C Outlook msg-Datei Anhänge extrahieren Allgemeine Java-Themen 2
G Datei aus Ordner wählen, ohne den Dateinamen im Pfad angeben zu müssen Allgemeine Java-Themen 4
G Datei senden via Xmodem an Serial-Port Allgemeine Java-Themen 35
C Wav-Datei aus Jar laden? Allgemeine Java-Themen 11
L Best Practice Zip Datei aktualisieren Allgemeine Java-Themen 1
N Speicherort einer Datei im Explorer ändern Allgemeine Java-Themen 8
H Mehrere PNG-Files in einer Datei Allgemeine Java-Themen 9
Gaudimagspam CSV-Datei auslesen in Java Allgemeine Java-Themen 7
S createTempFile erstellt keine temporäre Datei Allgemeine Java-Themen 13
Hatsi09 Jar datei ausführen verursacht NumberFormatException Allgemeine Java-Themen 9
kodela bestimmten Dateityp immer mit jar-Datei öffnen Allgemeine Java-Themen 17
N Arrayliste in eine Datei speichern Allgemeine Java-Themen 4
B .txt Datei erstellen und auslesen bzw. schreiben Allgemeine Java-Themen 6
J Öffnen eine jar-Datei Allgemeine Java-Themen 11
Dann07 MP3 Datei abspielen funktioniert nicht Allgemeine Java-Themen 6
H ArrayListe in CSV Datei speichern Allgemeine Java-Themen 6
O Aus JAR-Datei erstellte EXE-Datei funktioniert nicht Allgemeine Java-Themen 10
N Txt Datei auslesen. Allgemeine Java-Themen 5
B Datei/Ordner auf Server zugreifen/erstellen Allgemeine Java-Themen 2
MiMa Datei verschieben hat einen Fehler?? Allgemeine Java-Themen 20
MiMa Erstellungsdatum einer Datei Allgemeine Java-Themen 10
O xlsx Datei auslesen mit POI Apache liest keine LEERZELLEN Allgemeine Java-Themen 6
P Input/Output entfernte Datei mit Java öffnen ohne Download Allgemeine Java-Themen 5
O xlsx Datei auslesen mit POI von Apache wirft seltsamen Fehler. Allgemeine Java-Themen 11
J Hilfe, Jar Datei kann nicht ausgeführt werden Allgemeine Java-Themen 2
M Programm erkennt String aus .txt Datei nicht Allgemeine Java-Themen 3
O Java-Applikation tut in Netbeans, als JAR nicht, wegen Pfadangaben einer benötigten Datei Allgemeine Java-Themen 8
J Fehlermeldung bei Ausführung von .jar-Datei Allgemeine Java-Themen 9
J Die Letzte Zahl aus einer Text datei lesen Allgemeine Java-Themen 8
Elyt Compiler-Fehler Datei kann nicht erstellt werden. Die Syntax für den Dateinamen etc. ist falsch. Allgemeine Java-Themen 2
M Probleme jar datei. Allgemeine Java-Themen 2
F Datei in String-Array einlesen Allgemeine Java-Themen 8
O docx-Datei erzeugung mit DocXStamper funktioniert nicht Allgemeine Java-Themen 2
T Objekt mit String und Int aus TxT Datei erstellen Allgemeine Java-Themen 23
Bluedaishi Prüfen ob Datei noch geöffnet ist Allgemeine Java-Themen 59
I Temp-Datei wird nicht gelöscht Allgemeine Java-Themen 12
D ODS.Datei öffnet leider in Excel Allgemeine Java-Themen 3
L JavaFX JavaFX Chart in Apache Poi Excel Datei Allgemeine Java-Themen 2
D .txt Datei in .jar Datei speichern Allgemeine Java-Themen 3
ralfb1105 Blöcke aus Datei filtern/suchen und in neue Datei schreiben Allgemeine Java-Themen 10
M Daten aus MatLab Datei lesen Allgemeine Java-Themen 8
L SQL Datei in Eclipse erstellen Allgemeine Java-Themen 3
Drachenbauer Wie sorge ich dafür, dass mein Spiel die ini-Datei in der Resourcen-ordner des Projektes schreibt? Allgemeine Java-Themen 5
Trèfle Excel-Datei nicht speicherbar, da von Java zum Bearbeiten gesperrt. Allgemeine Java-Themen 3
L Excel Datei löscht sich selbst im Programm - Java Allgemeine Java-Themen 3
G Workupload datei mit Java Downloaden Allgemeine Java-Themen 6
H .jar Datei startet nicht richtig bei Doppelklick Allgemeine Java-Themen 11
S Hilfe bei dem Auslesen einer YAML Datei Allgemeine Java-Themen 8
M Java Eclipse- Datei exportieren Allgemeine Java-Themen 5
R jar-Datei funktioniert nicht Allgemeine Java-Themen 2
R .txt Datei einlesen und auf der Konsole ausgeben lassen Allgemeine Java-Themen 11
T Jar Datei nicht ausführbar Allgemeine Java-Themen 6
H jar-Datei mit java.exe anstatt mit javaw.exe ausführen Allgemeine Java-Themen 9
S Datei wird nicht gefunden Thread.currentThread().getContextClassLoader().getResourceAsStream() Allgemeine Java-Themen 1
A Steuerung von Spiel aus Datei lesen Allgemeine Java-Themen 0
Javafan01 .sh datei in Java ausführen Allgemeine Java-Themen 1
MiMa Speichern von Programmeinstellungen in Datei Allgemeine Java-Themen 7
J Ordner und Datei Struktur einer War Datei Allgemeine Java-Themen 1
J XML Datei mit installiertem Programm öffnen Allgemeine Java-Themen 7
L Weg um Datei zuzuordnen? Allgemeine Java-Themen 3
MiMa Datei kann nicht umbenannt oder verschoben werden ?? Allgemeine Java-Themen 17
S Input/Output Beste Möglichkeit einen String in einen Datei zu Schreiben Allgemeine Java-Themen 2
K Erste Schritte Start einer JAR Datei 2 Wege aber einmal nicht die volle Funktionlität Allgemeine Java-Themen 20
J Datei löschen, die Leerzeichen im Pfad hat Allgemeine Java-Themen 5

Ähnliche Java Themen

Neue Themen


Oben