QFile - QTextStream - letzte oder bestimmte Zeile auslesen

Alles rund um die Programmierung mit Qt
Antworten
spawnb
Beiträge: 28
Registriert: 23. März 2009 08:18

QFile - QTextStream - letzte oder bestimmte Zeile auslesen

Beitrag von spawnb »

Hallo,

gibt es eine Möglichkeit aus einer Text-Datei nur eine bestimmte Zeile, bzw. die letzte Zeile auszulesen?

Begründung:
Ich muss Sekündlich eine Log-Datei auslesen, welche relative groß werden kann. Dabei interessiert mich eigentlich nur die zu letzt geschriebene Zeile, also die Letzte.
Christian81
Beiträge: 7319
Registriert: 26. August 2004 14:11
Wohnort: Bremen
Kontaktdaten:

Beitrag von Christian81 »

Nein, sows geht nicht. Da man aber die Dateigröße hat kann man ja recht weit hinten positionieren.
MfG Christian

'Funktioniert nicht' ist keine Fehlerbeschreibung
spawnb
Beiträge: 28
Registriert: 23. März 2009 08:18

Beitrag von spawnb »

was meinst du mit positionieren, pls kleines Example.. ;)
Christian81
Beiträge: 7319
Registriert: 26. August 2004 14:11
Wohnort: Bremen
Kontaktdaten:

Beitrag von Christian81 »

Wie wäre es mit Doku lesen?
http://doc.trolltech.com/4.5/qiodevice.html
MfG Christian

'Funktioniert nicht' ist keine Fehlerbeschreibung
spawnb
Beiträge: 28
Registriert: 23. März 2009 08:18

Beitrag von spawnb »

gibt es eine möglichkeit mit QFile die datei "unlocked" zu öffnen, dann könnte ich sie beim starten einlesen, und mit einem SystemFileWatcher beobachten, und bei modifikation, einfach die nächste zeile auslesen.

Leider lockt QFile trotzt Qt::ReadOnly, die Datei, wenn ich sie z.B. mit dem editor öffne kann ich nicht speichern.
spawnb
Beiträge: 28
Registriert: 23. März 2009 08:18

Beitrag von spawnb »

Habs gefunden, klappt so, ohne die ganze Log wieder einzulesen.

Danke für die nette Hilfe.
AuE
Beiträge: 918
Registriert: 5. August 2008 10:58

Beitrag von AuE »

na und wie hast es gelöst???
spawnb
Beiträge: 28
Registriert: 23. März 2009 08:18

Beitrag von spawnb »

wie oben geschrieben,

- Datei mit QFile öffnen, permission setzten
- TextStream auf die File, bis zum Ende lesen (stream->AtEnd())
- QFile und Stream offen lassen.
- QFileSystemWatcher auf die Datei und Changed-Signal connecten.
- emitet das signal, lese ich einfach mit file->readline, weiter bis ich wieder ans Ende (stream->AtEnd()) gelange
Antworten