Bestimmte Zeile aus einer .txt-Datei auslesen?

Status
Nicht offen für weitere Antworten.

till123

Bekanntes Mitglied
Hallo,

vielleicht könnt ihr mir weiterhelfen. Ich habe folgendes Problem/Wunsch:

1.)
Ich möchte aus einer .txt-Datei nur genau eine Zeile auslesen. Dafür möchte ich vorher aber nicht die ganze Datei in meinen Speicher geladen haben! - Geht das??? (bei .bin-Dateien geht ja sowas - auch wenn es sich dann nicht um Zeilen, sondern um die entsprechende Bit-Stelle handelt)

2.)
Wenn ich eine .txt-Datei Zeilenweise bis zur gewünschten Zeile einlese, was passiert mit den vorher eingelesenen Zeilen?
Bleiben die im Arbeitsspeicher? Bsp. ich möchte nur die 10Zeile auslesen. Was passiert dann mit den Zeilen 1-9, die zuvor ausgelesen worden sind?


Danke.

Gruß
Till
 

The_S

Top Contributor
1.) RandomAccessFile oder einfach die vorhergehenden nicht speichern (siehe 2.))
2.) Solang du die Zeilen nirgends speicherst, verschwinden sie in den unendlichen Weiten des GC ;) .
 

till123

Bekanntes Mitglied
@Hobbit_Im_Blutrausch:

zu 1:
Bist du dir da ganz sicher, dass er zuvor nicht die ganze Datei einliest?

Aufruf wäre dann z.B. (ohne dass ich mir jetzt die Syntax angeschaut habe):
RandomAccessFile(test.txt,12)...
Und ich bekomme dann nur nie zwölfte Zeile zurückgegeben?

Danke
 

The_S

Top Contributor
kA, hab noch nie mit RandomAccessFile gearbeitet (ist eh schwachsinnig, Dateien sind nunmal sequentiell), aber die API sollte darüber doch aufklären!?


[edit] sollte das wohl erklären:


API hat gesagt.:
A random access file behaves like a large array of bytes stored in the file system. There is a kind of cursor, or index into the implied array, called the file pointer; input operations read bytes starting at the file pointer and advance the file pointer past the bytes read.

Den Konstruktor gibt es nicht RandomAccessFile(String int) - außerdem liest du entweder byte- oder typ-weise (read(), readInt(), readUTF(), ...). Zeilenweise kannst du damit nicht so einfach lesen.
 

till123

Bekanntes Mitglied
... dann bleibt mir anscheinend nichts anderes übrig als:

1.) .txt-Datei zeilenweise einlesen (bis zur gewünschten Zeile) - nicht gerade die beste Performance!
2.) selber ein Konstruktor schreiben, der mir direkt die gewünschte Zeile ausgibt - mehr Arbeit, Frage der Performance!
3.) meine Daten in einer .bin-Datei speichern - Problem der variablen Adressierung!


Danke für die Hilfe
 

The_S

Top Contributor
1.) Wie gesagt: Dateien sind sequentiell (und haben außerdem keine Zeilen :p )! Und außerdem, woher sollte denn irgendetwas wissen, wie viele "Zeilenumbruch-Zeichen" vorkommen, wenn er nicht jedes einzelne Zeichen angeguckt hat? Das ist also kein Performance-Problem, sondern einfach nicht anders möglich. Du schaust ja auch net einfach auf die Autobahn und sagst "Da fahren 20 rote Autos", sondern du musst dir jedes einzelne Auto anschauen und beurteilen ob es rot ist oder nicht. Anders schauts natürlich aus, wenn du genau weißt, wie lang eine Zeile ist ...

2.) Seit wann geben den Konstruktoren Daten aus? Was haben höchstens 20 Zeilen Code mit Arbeit zu tun? Und was hat das hier schon wieder mit der Performance zu tun?

3.) ???
 

Wolfram

Mitglied
till123 hat gesagt.:
... dann bleibt mir anscheinend nichts anderes übrig als:

1.) .txt-Datei zeilenweise einlesen (bis zur gewünschten Zeile) - nicht gerade die beste Performance!
2.) selber ein Konstruktor schreiben, der mir direkt die gewünschte Zeile ausgibt - mehr Arbeit, Frage der Performance!
3.) meine Daten in einer .bin-Datei speichern - Problem der variablen Adressierung!


Danke für die Hilfe

Hallo Till,

Du möchtest Dich mit ziemlicher Sicherheit ganz demnächst mit Datenbanken vertraut machen.

Grüße,
Wolfram
 

till123

Bekanntes Mitglied
zu 1 und 3:

Bei .bin-Dateien kann man direkt die gewünschten Bytes adressieren! Muss also nicht die ganze Datei in den Speicher laden. Hier muss man aber, wenn man ein Programm schreiben möchte, schon vorher festlegen, was in welcher Länge gespeichert werden darf. Sonst kann man (logischer Weise) die Adresse nicht genau bestimmen und aufrufen (s. SQL, hier gibt man ja auch vorher an, wie lang z.B. ein String sein darf)!

Wenn man nun aber dynamische Daten/Informationen, wie z.B. in der Fuzzy-Theorie speichern möchte, so ist die Länge nicht immer bekannt bzw. ist es nicht immer sinnvoll eine Länge vorzugeben, da so relativ schlampig mit dem Speicher umgegangen wird.

Sorry, Konstruktor war das falsche Wort! Und soviel Arbeit ist das nicht. Wollte halt nur wissen, ob es schon was vorgefertigtes gibt.


ende und out

thx
 

The_S

Top Contributor
.bin-Dateien sind (genauso wie alle anderen Dateien) nur ne Aufeinanderfolge von bits und bytes. Die Dateiendung sagt rein garnichts über den Inhalt einer Datei aus.
 

Wolfram

Mitglied
till123 hat gesagt.:
zu 1 und 3:

Bei .bin-Dateien kann man direkt die gewünschten Bytes adressieren! Muss also nicht die ganze Datei in den Speicher laden. Hier muss man aber, wenn man ein Programm schreiben möchte, schon vorher festlegen, was in welcher Länge gespeichert werden darf. Sonst kann man (logischer Weise) die Adresse nicht genau bestimmen und aufrufen (s. SQL, hier gibt man ja auch vorher an, wie lang z.B. ein String sein darf)!

Wenn man nun aber dynamische Daten/Informationen, wie z.B. in der Fuzzy-Theorie speichern möchte, so ist die Länge nicht immer bekannt bzw. ist es nicht immer sinnvoll eine Länge vorzugeben, da so relativ schlampig mit dem Speicher umgegangen wird.

Sorry, Konstruktor war das falsche Wort! Und soviel Arbeit ist das nicht. Wollte halt nur wissen, ob es schon was vorgefertigtes gibt.


ende und out

thx

Hi,

dazu benutzt man dann einen "Index", wo drin steht, wo die Records anfangen. An Stelle 9 des Index steht dann z.B. 437, und so weiß man, wenn man den 9. Record haben will, muss man an Stelle 437 anfangen zu lesen. Der Index muss natürlich beim Schreiben und sonstigem Verändern gepflegt werden.

Jede Datenbank hat so was als Grundlage, da Datenbanken ja alle das Problem haben, Records in Dateien speichern zu müssen, und natürlich gibt es sowas längst. Daher mein Hinweis, dass Du Datenbanken benutzen möchtest. In SQL sind z.B. die Felddatentypen text/ntext/memo und blob variabel lang, wenn Du ganz, ganz sicher bist, dass die einzelnen Felder variabel lang sein müssen, kannst Du die benutzen.

Ansonsten musst Du halt das Rad neu erfinden und ISAM nachprogrammieren ... viel Spaß damit ;)

Grüße,
Wolfram
 

till123

Bekanntes Mitglied
Danke für die Info.
Leider kann ich auf einer "normalen Datenbank" (z.B. relational) nicht aufbauen! Wir wollen/müssen eine Fuzzy-Datenbank entwerfen. Und da helfen die herkömmlichen Datenbanken nicht wirklich weiter :(
Wir greifen auch schon auf Indizes zurück. (Also die Funktionsweise von Indizes ist klar ;) )

Also ein erneutes Danke an Alle.

Thema kann an dieser Stelle geschlossen werden ;)
 
Status
Nicht offen für weitere Antworten.
Ähnliche Java Themen
  Titel Forum Antworten Datum
N Bestimmte Zeile aus einer Datei auslesen Java Basics - Anfänger-Themen 10
B Wie eine bestimmte Zeile einer Txt-Datei lesen ? Java Basics - Anfänger-Themen 5
B Ausgabe in bestimmte Zeile einer html Datei Java Basics - Anfänger-Themen 12
A CSV datei eine Bestimmte Zeile ansprechen Java Basics - Anfänger-Themen 1
Ananaskirsche Input/Output Bestimmte Zeile aus Datei einlesen Java Basics - Anfänger-Themen 4
D Bestimmte Zeile aus TXT Datei ausgeben Java Basics - Anfänger-Themen 4
Kenan89 Bestimmte Zeile in txt-Datei ersetzen Java Basics - Anfänger-Themen 4
D Input/Output bestimmte Zeile auslesen Java Basics - Anfänger-Themen 3
G Bestimmte Zeile aus CSV ausgeben Java Basics - Anfänger-Themen 14
Developer_X Durch int Bestimmte Zeile überschreiben Java Basics - Anfänger-Themen 16
Developer_X Bestimmte Zeile aus TextDocument lesen Java Basics - Anfänger-Themen 2
M Bestimmte zeile aus .txt einlesen Java Basics - Anfänger-Themen 6
2 Bestimmte Zeile Farblich hervorheben Java Basics - Anfänger-Themen 7
P aus Textarea bestimmte Zeile auslesen Java Basics - Anfänger-Themen 3
G nur bestimmte zeile aus textdatei auslesen Java Basics - Anfänger-Themen 2
B Alle Zahlen finden, die 3 bestimmte Ziffern enthalten? Java Basics - Anfänger-Themen 9
S Bestimmte werte aus einem Array löschen Java Basics - Anfänger-Themen 2
K loop pausieren für eine bestimmte Anzahl? Java Basics - Anfänger-Themen 1
Cassy3 Binäre Bäume Rekursiv durchlaufen und bestimmte Elemente Zählen Java Basics - Anfänger-Themen 6
Schniffi Nur bestimmte Bilder aus einem Array auf Image Button anzeigen lassen Java Basics - Anfänger-Themen 3
W Bestimmte Zahlen bei Math.random ausschließen? Java Basics - Anfänger-Themen 31
J Bestimmte parameter aus Jsonfile auslesen Java Basics - Anfänger-Themen 15
HighLife Bestimmte Werte aus Array zählen Java Basics - Anfänger-Themen 15
T Bestimmte Zahlen ausgeben mit einer whilfe Schleife Java Basics - Anfänger-Themen 21
M Wie kann ich bei int-Variablen im exception handler auf bestimmte Strings reagieren? Java Basics - Anfänger-Themen 5
B Neue Liste erstellen, wenn Objekte bestimmte Referenz hat / Gruppierung von Einträgen Java Basics - Anfänger-Themen 12
B Nur eine bestimmte Anzahl an Arrays ausgeben Java Basics - Anfänger-Themen 9
M Regex für bestimmte Wörter bzw. bestimmte Zeichen erstellen Java Basics - Anfänger-Themen 5
B Von Array nur eine bestimmte Anzahl bekommen Java Basics - Anfänger-Themen 3
J Datei auslesen (nur bestimmte Stellen) Java Basics - Anfänger-Themen 2
L Nur Bestimmte Werte aus einem Array in ein anderes Speichern Java Basics - Anfänger-Themen 11
B Denkanstoß benötigt: Emails an bestimmte Emailadresse schicken Java Basics - Anfänger-Themen 6
U Mehrfacheingabe auf bestimmte Parameter prüfen Java Basics - Anfänger-Themen 8
L String auf bestimmte zeichen untersuchen Java Basics - Anfänger-Themen 9
L Bestimmte Werte eines Arrays ausgeben. Java Basics - Anfänger-Themen 3
P Input/Output Bestimmte Anzahl von Werten in einem Array an Methode übergeben Java Basics - Anfänger-Themen 2
Henri Bestimmte Werte eine XML-Datei ausgeben. Java Basics - Anfänger-Themen 8
M ComboBox bestimmte Elemente disablen/ausgrauen Java Basics - Anfänger-Themen 3
S JButton soll für bestimmte Zeit verschwinden Java Basics - Anfänger-Themen 5
E Datei einlesen und bestimmte Wörter ausgeben Java Basics - Anfänger-Themen 2
A Threads Threads bestimmte Aufgaben zuweisen... Java Basics - Anfänger-Themen 3
D Input/Output Buchstaben als bestimmte Zahl erkennen Java Basics - Anfänger-Themen 4
S Welche Datenstruktur ist die optimalste um Funktionen fuer bestimmte Wertebereiche abzurufen..? Java Basics - Anfänger-Themen 5
N Bestimmte Zeichen eines Strings umwandeln Java Basics - Anfänger-Themen 4
K Eine bestimmte Zeit, eine Schleife laufen lassen. Java Basics - Anfänger-Themen 4
W char-Array auf bestimmte Zeichen prüfen Java Basics - Anfänger-Themen 10
C Array kopieren und nur bestimmte Werte speichern Java Basics - Anfänger-Themen 6
D Bestimmte Werte von Objekten aus einer ArrayList in eine andere ArrayList kopieren Java Basics - Anfänger-Themen 14
N Bestimmte Inhalte aus Datei lesen Java Basics - Anfänger-Themen 11
B Best Practice Bestimmte Zahl auslesen und in Variable speichern Java Basics - Anfänger-Themen 3
I Int Array, Zahl an bestimmte position setzten Java Basics - Anfänger-Themen 2
C [Bukkit Plugin] Blöcke eine bestimmte route entlang fliegen Java Basics - Anfänger-Themen 3
A Button in eine bestimmte Spalte platzieren Java Basics - Anfänger-Themen 4
A Eine Datei Lesen und bestimmte Position überschreiben Java Basics - Anfänger-Themen 2
M Bestimmte Zeichen auslesen Java Basics - Anfänger-Themen 2
G bestimmte dateiendungen in jtree rausfiltern Java Basics - Anfänger-Themen 7
W bestimmte Objekte in ArrayList auslesen Java Basics - Anfänger-Themen 8
G JTextArea: nur bestimmte Zeilen anders formatieren Java Basics - Anfänger-Themen 7
B Input/Output bestimmte Zeilen in .txt Dateinen überschreiben Java Basics - Anfänger-Themen 20
J Bestimmte Anzahl Zeichen aneinander fügen Java Basics - Anfänger-Themen 9
C Bestimmte Informationen von Webseite suchen Java Basics - Anfänger-Themen 13
B Nur bestimmte Klasse ausführen Java Basics - Anfänger-Themen 6
D BufferedInputStream nur bestimmte Zeichen Java Basics - Anfänger-Themen 11
B Bestimmte Ziffer Java Basics - Anfänger-Themen 27
B Input/Output In Datei an eine bestimmte Stelle schreiben Java Basics - Anfänger-Themen 37
S Bestimmte Objekte aus Collections anwählen/herausbekommen Java Basics - Anfänger-Themen 8
I Bestimmte Objekte einer Liste hinzufügen Java Basics - Anfänger-Themen 16
R Bestimmte Stellen eines BigInteger Java Basics - Anfänger-Themen 7
S Collections Aus Set<Object> bestimmte Typen entfernen Java Basics - Anfänger-Themen 3
S Bestimmte Methode von unbestimmter Datei Java Basics - Anfänger-Themen 6
V Bestimmte Stellen aus .txt Datei auslesen Java Basics - Anfänger-Themen 11
B bestimmte klammern im string ersetzten Java Basics - Anfänger-Themen 17
Binary.Coder JTable bzw. Tabelle in bestimmte Form überführen Java Basics - Anfänger-Themen 5
B Bestimmte Werte aus einem String entnehmen Java Basics - Anfänger-Themen 3
0 Grafik eine bestimmte Strecke laufen lassen Java Basics - Anfänger-Themen 6
X im Verzeichnissbaum recursiv nur bestimmte Dateien finden Java Basics - Anfänger-Themen 7
M Aus String bestimmte Inhalte auslesen Java Basics - Anfänger-Themen 8
M Reaktion auf bestimmte Zeit Java Basics - Anfänger-Themen 2
2 Bestimmte Anzahl von Bytes lesen und als string ausgeben? Java Basics - Anfänger-Themen 3
N Bestimmte Zeichen aus Strings zählen Java Basics - Anfänger-Themen 11
P Bestimmte Zeilen einer Datei ermitteln ? Java Basics - Anfänger-Themen 30
StrikeTom Bestimmte stelle in string herausfiltern Java Basics - Anfänger-Themen 7
M Float auf bestimmte Nachkommazahl runden Java Basics - Anfänger-Themen 3
E Bild eine bestimmte Anzahl blinken lassen Java Basics - Anfänger-Themen 3
B array bestimmte summe berechnen Java Basics - Anfänger-Themen 4
Luk10 Zufallszahl "ohne" eine bestimmte Zahl(en) Java Basics - Anfänger-Themen 8
S OOP Wie bei Spiel "17+4" eine Karte an bestimmte Position hinzufügen Java Basics - Anfänger-Themen 13
B OOP String auf bestimmte Zeichen abfragen Java Basics - Anfänger-Themen 4
S Bestimmte Elemente einer ArrayList löschen Java Basics - Anfänger-Themen 3
S Double bis bestimmte Nachkommzahl vergleichen (ohne zusätzliche Libs) Java Basics - Anfänger-Themen 12
Ollek Bestimmte Zeilen aus einer HTML Datei lesen Java Basics - Anfänger-Themen 8
N Text an bestimmte Stelle eines Dokuments schreiben Java Basics - Anfänger-Themen 6
Assassin Nur bestimmte Daten aus txt auslesen... Java Basics - Anfänger-Themen 12
V Nur bestimmte Werte zulassen Java Basics - Anfänger-Themen 2
Q Nach Stringvorgabe bestimmte funktionen ausführen Java Basics - Anfänger-Themen 3
G Bestimmte Ebene eines Baumes rekursiv ausgeben Java Basics - Anfänger-Themen 49
I bestimmte Zahlen markieren.helppp. Java Basics - Anfänger-Themen 17
G Bestimmte Position im array auslesen Java Basics - Anfänger-Themen 8
H bestimmte objekte in ArrayList löschen? Java Basics - Anfänger-Themen 7
P Hilfe für JComboBox, bmp einbinden/bestimmte punkte auf bmp Java Basics - Anfänger-Themen 3

Ähnliche Java Themen

Neue Themen


Oben