PPL7-Icon Patrick's Programming Library Version 7.0.0 - Dokumentation
ppl7::GzFile Klassenreferenz

Zugriff auf eine mit gzip komprimierte Datei. Mehr ...

Abgeleitet von ppl7::FileObject.

Öffentliche Typen

enum  SeekOrigin { SEEKCUR =1, SEEKEND, SEEKSET }
 Ausgangsbasis für Bewegung des Dateizeigers. Mehr ...
 

Öffentliche Methoden

 GzFile ()
 Konstruktor der Klasse. Mehr ...
 
 GzFile (const String &filename, File::FileMode mode=File::READ)
 Konstruktor der Klasse mit gleichzeitigem Öffnen einer Datei. Mehr ...
 
 GzFile (int fd)
 Konstruktor mit Übernahme eines C-Filehandles. Mehr ...
 
virtual ~GzFile ()
 Destruktor der Klasse. Mehr ...
 
virtual void close ()
 Datei schließen. Mehr ...
 
ppluint64 copyFrom (FileObject &quellfile, ppluint64 quelloffset, ppluint64 bytes, ppluint64 zieloffset)
 Daten aus einer anderen Datei kopieren. Mehr ...
 
ppluint64 copyFrom (FileObject &quellfile, ppluint64 bytes)
 Daten aus einer anderen Datei kopieren. Mehr ...
 
virtual bool eof () const
 Prüfen, ob Dateiende erreicht ist. Mehr ...
 
virtual int fgetc ()
 Zeichen lesen. Mehr ...
 
virtual char * fgets (char *buffer, size_t num)
 String lesen. Mehr ...
 
virtual wchar_t fgetwc ()
 Wide-Character Zeichen lesen. Mehr ...
 
virtual wchar_t * fgetws (wchar_t *buffer, size_t num=1024)
 Wide-Character String lesen. Mehr ...
 
const Stringfilename () const
 Dateiname auslesen. Mehr ...
 
virtual void flush ()
 Gepufferte Daten schreiben. Mehr ...
 
virtual void fputc (int c)
 Zeichen schreiben. Mehr ...
 
virtual void fputs (const char *str)
 String schreiben. Mehr ...
 
virtual void fputwc (wchar_t c)
 Wide-Character Zeichen schreiben. Mehr ...
 
virtual void fputws (const wchar_t *str)
 Wide-Character String schreiben. Mehr ...
 
virtual size_t fread (void *ptr, size_t size, size_t nmemb)
 Lesen eines Datenstroms. Mehr ...
 
virtual size_t fwrite (const void *ptr, size_t size, size_t nmemb)
 Schreiben eines Datenstroms. Mehr ...
 
virtual int getFileNo () const
 Filenummer der Datei. Mehr ...
 
int gets (String &buffer, size_t num=1024)
 String lesen. Mehr ...
 
String gets (size_t num=1024)
 String lesen. Mehr ...
 
int getws (String &buffer, size_t num=1024)
 Wide-Character String lesen. Mehr ...
 
String getws (size_t num=1024)
 Wide-Character String lesen. Mehr ...
 
virtual bool isOpen () const
 Prüfen, ob eine Datei geöffnet ist. Mehr ...
 
char * load ()
 Den kompletten Inhalt der Datei laden. Mehr ...
 
int load (ByteArray &target)
 Den kompletten Inhalt der Datei in ein Objekt laden. Mehr ...
 
virtual void lockExclusive (bool block=true)
 Datei exklusiv sperren. Mehr ...
 
virtual void lockShared (bool block=true)
 Datei zum Lesen sperren. Mehr ...
 
const char * map ()
 Datei in den Speicher mappen. Mehr ...
 
virtual const char * map (ppluint64 position, size_t size)
 Datei Read-Only in den Speicher mappen. Mehr ...
 
virtual char * mapRW (ppluint64 position, size_t size)
 Datei Les- und Schreibbar in den Speicher mappen. Mehr ...
 
String md5 ()
 
void open (const String &filename, File::FileMode mode=File::READ)
 Datei öffnen. Mehr ...
 
void open (const char *filename, File::FileMode mode=File::READ)
 Datei zum Lesen oder Schreiben öffnen. Mehr ...
 
void open (int fd, File::FileMode mode=File::READ)
 
 PPL7EXCEPTION (IllegalFilemodeException, Exception)
 
void puts (const String &str)
 String schreiben. Mehr ...
 
void putsf (const char *fmt,...)
 Formatierten String schreiben. Mehr ...
 
void putws (const WideString &str)
 Wide-Character-String schreiben. Mehr ...
 
size_t read (void *target, size_t bytes, ppluint64 fileposition)
 Daten lesen. Mehr ...
 
size_t read (void *target, size_t bytes)
 Daten lesen. Mehr ...
 
size_t read (ByteArray &target, size_t bytes)
 Daten in ein Objekt einlesen. Mehr ...
 
virtual void rewind ()
 Dateizeiger an den Anfang der Datei bringen. Mehr ...
 
virtual void seek (ppluint64 position)
 Dateizeiger auf gewünschte Stelle bringen. Mehr ...
 
virtual ppluint64 seek (pplint64 offset, SeekOrigin origin)
 Dateizeiger auf gewünschte Stelle bringen. Mehr ...
 
void setFilename (const char *filename)
 Dateiname festlegen. Mehr ...
 
void setFilename (const String &filename)
 Dateiname festlegen. Mehr ...
 
virtual void setMapReadAhead (size_t bytes)
 Minimalgröße des Speicherblocks bei Zugriffen mit FileObject::Map. Mehr ...
 
virtual ppluint64 size () const
 Größe der geöffneten Datei. Mehr ...
 
virtual void sync ()
 Dateiänderungen sofort auf die Platte schreiben. Mehr ...
 
virtual ppluint64 tell ()
 Aktuelle Dateiposition ermitteln. Mehr ...
 
virtual void truncate (ppluint64 length)
 Datei abschneiden. Mehr ...
 
virtual void unlock ()
 Dateisperre aufheben. Mehr ...
 
virtual void unmap ()
 Mapping aufheben. Mehr ...
 
size_t write (const void *source, size_t bytes, ppluint64 fileposition)
 Daten schreiben. Mehr ...
 
size_t write (const void *source, size_t bytes)
 Daten schreiben. Mehr ...
 
size_t write (const ByteArrayPtr &object, size_t bytes=0)
 Daten eines von Variant abgeleiteten Objekts schreiben. Mehr ...
 

Geschützte Attribute

char * buffer
 

Private Methoden

void throwErrno (int e)
 Exception anhand errno-Variable werfen. Mehr ...
 
void throwErrno (int e, const String &filename)
 Exception anhand errno-Variable werfen Mehr ...
 

Private Attribute

void * ff
 

Ausführliche Beschreibung

Include:
#include <ppl7.h>
Beschreibung:
Mit dieser Klasse können mit gzip-komprimierte Dateien geladen, verändert und gespeichert werden. Sie dient als Wrapper-Klasse für die Methoden aus der zlib-Bibliothek.

Dokumentation der Aufzählungstypen

Beschreibung:
Diese Enumeration definiert die Ausgahgsbasis für Bewegungen des Dateizeigers miitels der Funktion FileObject::seek
Aufzählungswerte
SEEKCUR 

Ausgehend von der aktuellen Position des Dateizeigers.

SEEKEND 

Ausgehend vom Ende der Datei.

SEEKSET 

Ausgehend vom Anfang der Datei.

Beschreibung der Konstruktoren und Destruktoren

ppl7::GzFile::GzFile ( )
Beschreibung:
Konstruktor der Klasse
ppl7::GzFile::GzFile ( const String filename,
File::FileMode  mode = File::READ 
)

Konstruktor der Klasse, mit dem gleichzeitig eine Datei geöffnet wird.

Parameter
[in]filenameName der zu öffnenden Datei
[in]modeZugriffsmodus. Defaultmäßig wird die Datei zum binären Lesen geöffnet (siehe ppl7_File_Filemodi)
ppl7::GzFile::GzFile ( int  fd)
Beschreibung:
Konstruktor der Klasse mit Übernahme eines C-Filehandles einer bereits mit ::fopen geöffneten Datei.
Parameter
[in]handleFile-Handle
ppl7::GzFile::~GzFile ( )
virtual
Beschreibung:
Der Destruktor der Klasse sorgt dafür, dass eine noch geöffnete Datei geschlossen wird und alle Systemresourcen wieder freigegeben werden.

Dokumentation der Elementfunktionen

void ppl7::GzFile::close ( )
virtual
Beschreibung:
Diese Funktion schließt die aktuell geöffnete Datei. Sie wird automatisch vom Destruktor der Klasse aufgerufen, so dass ihr expliziter Aufruf nicht erforderlich ist.
Wenn der Stream zur Ausgabe eingerichtet war, werden gepufferte Daten zuerst durch FileObject::flush geschrieben. Der zugeordnete Datei-Deskriptor wird geschlossen, alle Systemressourcen werden freigegeben.
Rückgabe
Kein Rückgabeparameter, im Fehlerfall wirft die Funktion eine Exception

Erneute Implementation von ppl7::FileObject.

ppluint64 ppl7::FileObject::copyFrom ( FileObject quellfile,
ppluint64  quelloffset,
ppluint64  bytes,
ppluint64  zieloffset 
)
inherited
Beschreibung:
Mit dieser Funktion kann ein Datenblock aus einer anderen Datei in diese hineinkopiert werden. Dabei werden bytes Bytes ab der Position quelloffset der Quelldatei quellfile gelesen an die Position zieloffset dieser Datei kopiert.
Parameter
quellfileDas Dateiobjekt, aus dem gelesen werden soll
quelloffsetPosition innerhalb der Quelldatei, ab der die Daten gelesen werden sollen
bytesAnzahl zu kopierender Bytes
zieloffsetPosition in dieser Datei, an die die Daten geschrieben werden sollen
Rückgabe
Bei Erfolg liefert die Funktion die Anzahl kopierter Bytes zurück. Im Fehlerfall wird eine Exception geworfen.
Zu beachten
Die Funktion verwendet einen internen Buffer zum Zwischenspeichern der gelesenen Daten.
ppluint64 ppl7::FileObject::copyFrom ( FileObject quellfile,
ppluint64  bytes 
)
inherited
Beschreibung:
Mit dieser Funktion kann ein Datenblock aus einer anderen Datei in diese hineinkopiert werden. Die Daten werden dabei ab dem aktuellen Dateipositionszeiger des quellfile an den aktuellen Zeiger dieser Datei kopiert.
Parameter
quellfileDas Dateiobjekt, aus dem gelesen werden soll
bytesAnzahl zu kopierender Bytes
Rückgabe
Bei Erfolg liefert die Funktion die Anzahl kopierter Bytes zurück. Im Fehlerfall wird eine Exception geworfen.
Zu beachten
Die Funktion verwendet einen internen Buffer zum Zwischenspeichern der gelesenen Daten.
bool ppl7::GzFile::eof ( ) const
virtual
Beschreibung:
Die Funktion prüft, ob das Dateiende erreicht wurde
Rückgabe
Liefert true zurück, wenn das Dateiende erreicht wurde, sonst false Falls die Datei nicht geöffnet war, wird wird eine Exception geworfen.

Erneute Implementation von ppl7::FileObject.

int ppl7::GzFile::fgetc ( )
virtual
Beschreibung:
fgetc liest das nächste Zeichen aus der Datei und gibt seinen unsigned char Wert gecastet in einem int zurück.
Rückgabe
Bei Erfolg wird der Wert des gelesenen Zeichens zurückgegeben, im Fehlerfall wird eine Exception geworfen.

Erneute Implementation von ppl7::FileObject.

char * ppl7::GzFile::fgets ( char *  buffer,
size_t  num 
)
virtual
Beschreibung:
fgets liest höchstens num minus ein Zeichen aus der Datei und speichert sie in dem Puffer, auf den buffer zeigt. Das Lesen stoppt nach einem EOF oder Zeilenvorschub. Wenn ein Zeilenvorschub gelesen wird, wird er in dem Puffer gespeichert. Am Ende der gelesenen Daten wird ein 0-Byte angehangen.
Parameter
bufferPointer auf den Speicherbereich, in den die gelesenen Daten geschrieben werden sollen. Dieser muss vorher vom Aufrufer allokiert worden sein und mindestens num Bytes groß sein.
numAnzahl zu lesender Zeichen
Rückgabe
Bei Erfolg wird buffer zurückgegeben, bei Dateiende wird NULL zurückgegeben. Im Fehlerfall wird eine Exception geworfen.

Erneute Implementation von ppl7::FileObject.

wchar_t ppl7::FileObject::fgetwc ( )
virtualinherited
Beschreibung:
fgetwc liest das nächste Wide-Character Zeichen aus der Datei und gibt seinen Wert als Integer zurück.
Rückgabe
Bei Erfolg wird das gelesene Zeichen als Integer Wert zurückgegeben, im Fehlerfall wird eine Exception geworfen.
Zu beachten
Die Funktion ist unter Umständen nicht auf jedem Betriebssystem verfügbar.

Erneute Implementation in ppl7::File und ppl7::MemFile.

wchar_t * ppl7::FileObject::fgetws ( wchar_t *  buffer,
size_t  num = 1024 
)
virtualinherited
Beschreibung:
fgwets liest höchstens num minus ein Zeichen (nicht Bytes) eines Wide-Character-Strings aus der Datei und speichert sie in dem Puffer, auf den buffer zeigt. Das Lesen stoppt nach einem EOF oder Zeilenvorschub. Wenn ein Zeilenvorschub gelesen wird, wird er in dem Puffer gespeichert. Am Ende der gelesenen Daten wird ein 0-Byte angehangen.
Parameter
bufferPointer auf den Speicherbereich, in den die gelesenen Daten geschrieben werden sollen. Dieser muss vorher vom Aufrufer allokiert worden sein und mindestens num * sizeof(wchar_t) Bytes groß sein.
numAnzahl zu lesender Zeichen
Rückgabe
Bei Erfolg wird buffer zurückgegeben, bei Dateiende wird NULL zurückgegeben. Im Fehlerfall wird eine Exception geworfen.
Zu beachten
Die Funktion ist unter Umständen nicht auf jedem Betriebssystem verfügbar. In diesem Fall wird eine
Ausnahmebehandlung
UnimplementedVirtualFunctionExceptiongeworfen.

Erneute Implementation in ppl7::File und ppl7::MemFile.

const String & ppl7::FileObject::filename ( ) const
inherited
Include:
#include <ppl7.h>
Beschreibung:
Mit dieser Funktion wird der interne Dateiname ausgelesen. Dieser wird über die Open-Funktionen oder die Funktion SetFilename festgelegt.
Rückgabe
Die Funktion liefert entweder den Dateinamen zurück oder "unknown"
void ppl7::FileObject::flush ( )
virtualinherited
Beschreibung:
Die Funktion Flush bewirkt, dass alle gepufferten Daten des aktuellen Streams mittels der zugrundeliegenden write-Funktion geschrieben werden. Der Status des Streams wird dabei nicht berührt. Die Daten werden nicht zwangsweise auch physikalisch auf die Platte geschrieben, sie können noch immer aus Performancegründen vom Kernel oder Treiber gecached werden. Um 100 Prozent sicher zu gehen, kann man die Funktion FileObject::sync verwenden.
Rückgabe
Kein Rückgabewert, im Fehlerfall wird eine Exception geworfen.

Erneute Implementation in ppl7::File und ppl7::MemFile.

void ppl7::FileObject::fputc ( int  c)
virtualinherited
Beschreibung:
fputc schreibt das Zeichen c, umgesetzt in ein unsigned char, in den Ausgabestrom.
Parameter
cZu schreibendes Zeichen
Rückgabe
Kein Rückgabewert, im Fehlerfall wird eine Exception geworfen.

Erneute Implementation in ppl7::File und ppl7::MemFile.

void ppl7::FileObject::fputs ( const char *  str)
virtualinherited
Beschreibung:
fputs schreibt die Zeichenkette str ohne sein nachfolgendes 0-Byte in den Ausgabestrom.
Parameter
strPointer auf den zu schreibenden String
Rückgabe
Kein Rückgabewert, im Fehlerfall wird eine Exception geworfen.

Erneute Implementation in ppl7::File und ppl7::MemFile.

void ppl7::FileObject::fputwc ( wchar_t  c)
virtualinherited
Beschreibung:
fputwc schreibt das Wide-Character Zeichen c in den Ausgabestrom.
Parameter
cZu schreibendes Zeichen
Rückgabe
Kein Rückgabewert, im Fehlerfall wird eine Exception geworfen.
Zu beachten
Die Funktion ist unter Umständen nicht auf jedem Betriebssystem verfügbar.

Erneute Implementation in ppl7::File und ppl7::MemFile.

void ppl7::FileObject::fputws ( const wchar_t *  str)
virtualinherited
Beschreibung:
fputs schreibt die Zeichenkette str ohne sein nachfolgendes 0-Byte in den Ausgabestrom.
Parameter
strPointer auf den zu schreibenden String
Rückgabe
Kein Rückgabewert, im Fehlerfall wird eine Exception geworfen.
Zu beachten
Die Funktion ist unter Umständen nicht auf jedem Betriebssystem verfügbar. In diesem Fall wird Fehlercode 246 zurückgegeben.

Erneute Implementation in ppl7::File und ppl7::MemFile.

size_t ppl7::GzFile::fread ( void *  ptr,
size_t  size,
size_t  nmemb 
)
virtual
Beschreibung:
Die Funktion fread liest nmemb Datenelemente vom Dateistrom und speichert es an der Speicherposition, die durch ptr bestimmt ist. Jedes davon ist \ size Byte lang.
Parameter
[out]ptrPointer auf den Speicherbereich, in den die gelesenen Daten abgelegt werden sollen. Der Aufrufer muss vorher mindestens size * nmemb Bytes Speicher reserviert haben.
[in]sizeGröße der zu lesenden Datenelemente
[in]nmembAnzahl zu lesender Datenelemente
Rückgabe
fread gibt die Anzahl der erfolgreich gelesenen Elemente zurück (nicht die Anzahl der Zeichen). Wenn ein Fehler auftritt oder das Dateiende erreicht ist, wird eine Exception geworfen.
Ausnahmebehandlung
EndOfFileExceptionWird geworfen, wenn das Dateiende erreicht wurde

Erneute Implementation von ppl7::FileObject.

size_t ppl7::FileObject::fwrite ( const void *  ptr,
size_t  size,
size_t  nmemb 
)
virtualinherited
Beschreibung:
Die Funktion fwrite schreibt nmemb Datenelemente der Größe size Bytes, in den Dateistrom. Sie werden von der Speicherstelle, die durch ptr angegeben ist, gelesen.
Parameter
ptrPointer auf den Beginn des zu schreibenden Speicherbereiches.
sizeGröße der zu schreibenden Datenelemente
nmembAnzahl zu schreibender Datenelemente
Rückgabe
fwrite gibt die Anzahl der erfolgreich geschriebenen Elemente zurück (nicht die Anzahl der Zeichen). Wenn ein Fehler auftritt, wird eine Exception geworfen.

Erneute Implementation in ppl7::File und ppl7::MemFile.

int ppl7::FileObject::getFileNo ( ) const
virtualinherited
Beschreibung:
Die Funktion liefert den Dateideskriptor als Integer zurück, wie er von den Systemfunktionen open , read , write und close genutzt wird.
Rückgabe
Liefert die Filenummer zurück oder wirft eine Exception, wenn die Datei nicht geöffnet war.

Erneute Implementation in ppl7::File und ppl7::MemFile.

int ppl7::FileObject::gets ( String buffer,
size_t  num = 1024 
)
inherited
Beschreibung:
Gets liest höchstens num minus ein Zeichen aus der Datei und speichert sie im String-Objekt buffer. Das Lesen stoppt nach einem EOF oder Zeilenvorschub. Wenn ein Zeilenvorschub gelesen wird, wird er in dem Puffer gespeichert. Am Ende der gelesenen Daten wird ein 0-Byte angehangen.
Parameter
bufferString-Objekt, in dem die gelesenen Daten gespeichert werden sollen.
numAnzahl zu lesender Zeichen
Rückgabe
Bei Erfolg wird 1 zurückgegeben, bei Erreichen des Dateiende 0. Im Fehlerfall wird eine Exception geworfen. Der Inhalt von buffer ist im Fehlerfall undefiniert.
String ppl7::FileObject::gets ( size_t  num = 1024)
inherited
Beschreibung:
Gets liest höchstens num minus ein Zeichen aus der Datei und liefert deren Inhalt als String-Objekt zurück. Das Lesen stoppt nach einem EOF oder Zeilenvorschub. Wenn ein Zeilenvorschub gelesen wird, wird er in dem Puffer gespeichert. Am Ende der gelesenen Daten wird ein 0-Byte angehangen.
Parameter
numAnzahl zu lesender Zeichen
Rückgabe
Die Funktion gibt ein String-Objekt mit den gelesenen Daten zurück. Im Fehlerfall (auch bei Dateiende) wird eine Exception geworfen.
int ppl7::FileObject::getws ( String buffer,
size_t  num = 1024 
)
inherited
Beschreibung:
Gets liest höchstens num minus ein Zeichen aus der Datei und speichert sie im Wide-Character-String-Objekt buffer. Das Lesen stoppt nach einem WEOF oder Zeilenvorschub. Wenn ein Zeilenvorschub gelesen wird, wird er in dem Puffer gespeichert. Am Ende der gelesenen Daten wird ein 0-Byte angehangen.
Parameter
bufferWide-Character-String-Objekt, in dem die gelesenen Daten gespeichert werden sollen.
numAnzahl zu lesender Zeichen. Hierbei handelt es sich tatsächlich um Zeichen, nicht um Bytes. Die Anzahl zu lesender Bytes wird intern mit der Formel num * sizeof(wchar_t) errechnet.
Rückgabe
Bei Erfolg wird 1 zurückgegeben, bei Erreichen des Dateiende 0. Im Fehlerfall wird eine Exception geworfen. Der Inhalt von buffer ist im Fehlerfall undefiniert.
String ppl7::FileObject::getws ( size_t  num = 1024)
inherited
Beschreibung:
Gets liest höchstens num minus ein Zeichen aus der Datei liefert sie als Wide-Character-String-Objekt zurück. Das Lesen stoppt nach einem WEOF oder Zeilenvorschub. Wenn ein Zeilenvorschub gelesen wird, wird er in dem Puffer gespeichert. Am Ende der gelesenen Daten wird ein 0-Byte angehangen.
Parameter
numAnzahl zu lesender Zeichen. Hierbei handelt es sich tatsächlich um Zeichen, nicht um Bytes. Die Anzahl zu lesender Bytes wird intern mit der Formel num * sizeof(wchar_t) errechnet.
Rückgabe
Die Funktion gibt ein String-Objekt mit den gelesenen Daten zurück. Im Fehlerfall (auch bei Dateiende) wird eine Exception geworfen.
bool ppl7::GzFile::isOpen ( ) const
virtual
Include:
#include <ppl7.h>
Beschreibung:
Mit dieser Funktion kann geprüft werden, ob die mit diesem Objekt assoziierte Datei gerade geöffnet ist.
Rückgabe
Die Funktion liefert true zurück, wenn die Datei offen ist, ansonsten false.

Erneute Implementation von ppl7::FileObject.

char * ppl7::FileObject::load ( )
inherited
Beschreibung:
Mit dieser Funktion wird der komplette Inhalt der geöffneten Datei in den Hauptspeicher geladen. Der benötigte Speicher wird von der Funktion automatisch allokiert und muss vom Aufrufer nach Gebrauch mit free wieder freigegeben werden.
Rückgabe
Pointer auf den Speicherbereich mit dem Inhalt der Datei. Dieser muss vom Aufrufer nach Gebrauch mit free selbst wieder freigegeben werden. Im Fehlerfall wird eine Exception geworfen.
int ppl7::FileObject::load ( ByteArray object)
inherited
Beschreibung:
Mit dieser Funktion wird der komplette Inhalt der geöffneten Datei in das angegebene ByteArray object geladen.
Parameter
[out]objectDas gewünschte Zielobjekt
Rückgabe
Liefert 1 zurück, wenn der Inhalt geladen werden konnte, sonst 0.
void ppl7::FileObject::lockExclusive ( bool  block = true)
virtualinherited
Beschreibung:
Mit LockExclusive wird die Datei exklusiv zum Schreiben gesperrt. Andere Prozesse können nicht auf die Datei zugreifen, solange die Sperre besteht.
Parameter
blockGibt an, ob die Funktion warten soll (blocken), bis die Datei gesperrt werden kann (block=true) oder sofort mit einer Fehlermeldung zurückkehren soll (block=false).
Rückgabe
Kein Rückgabewert, im Fehlerfall wird eine Exception geworfen.
Siehe auch
Siehe auch File::LockShared und File::Unlock

Erneute Implementation in ppl7::File und ppl7::MemFile.

void ppl7::FileObject::lockShared ( bool  block = true)
virtualinherited
Beschreibung:
Mit LockShared wird die Datei zum Lesen gesperrt. Andere Prozesse können weiterhin auf die Datei zugreifen, allerdings ebenfalls nur lesend.
Parameter
blockGibt an, ob die Funktion warten soll (blocken), bis die Datei gesperrt werden kann (block=true) oder sofort mit einer Fehlermeldung zurückkehren soll (block=false).
Rückgabe
Kein Rückgabewert, im Fehlerfall wird eine Exception geworfen.
Siehe auch
Siehe auch File::LockExclusive und File::Unlock

Erneute Implementation in ppl7::File und ppl7::MemFile.

const char * ppl7::FileObject::map ( )
inherited
Beschreibung:
Mit dieser Funktion wird der komplette Inhalt der Datei in den Speicher gemapped. Falls das Betriebssystem mmap versteht, wird dieser verwendet. Dabei wird die Datei nicht sofort komplett in den Speicher geladen, sondern nur die Teile, die gerade benötigt werden. Steht mmap nicht zur Verfügung, wird die Datei in den Hauptspeicher geladen. Die File-Klasse kümmert sich selbst daraum, dass der Speicher auch wieder freigegeben wird.
Ein mit Map gemappter Speicher darf nur gelesen, aber nicht beschrieben werden!
Rückgabe
Bei Erfolg gibt die Funktion einen Pointer auf den Speicherbereich zurück, in dem sich die Datei befindet, im Fehlerfall wirft die Funktion eine Exception
const char * ppl7::FileObject::map ( ppluint64  position,
size_t  size 
)
virtualinherited
Beschreibung:
Mit dieser Funktion wird ein Teil der Datei in den Speicher gemapped. Falls das Betriebssystem mmap versteht, wird dieser verwendet. Dabei wird der gewünschte Datenblock nicht sofort komplett in den Speicher geladen, sondern nur der Teil, auf den gerade zugegriffen wird. Steht mmap nicht zur Verfügung, wird die Datei in den Hauptspeicher geladen. Die File-Klasse kümmert sich selbst daraum, dass der Speicher auch wieder freigegeben wird.
Ein mit Map gemappter Speicher darf nur gelesen, aber nicht beschrieben werden! Falls auch geschrieben werden soll, ist die Funktion FileObject::MapRW zu verwenden.
Parameter
[in]positionDie gewünschte Startposition innerhalb der Datei
[in]sizeDie Anzahl Bytes, die gemapped werden sollen.
Rückgabe
Bei Erfolg gibt die Funktion einen Pointer auf den Speicherbereich zurück, in dem sich die Datei befindet, im Fehlerfall wird eine Exception geworfen.

Erneute Implementation in ppl7::File und ppl7::MemFile.

char * ppl7::FileObject::mapRW ( ppluint64  position,
size_t  size 
)
virtualinherited
Beschreibung:
Mit dieser Funktion wird ein Teil der Datei in den Speicher gemapped. Falls das Betriebssystem mmap versteht, wird dieser verwendet. Dabei wird der gewünschte Datenblock nicht sofort komplett in den Speicher geladen, sondern nur der Teil, auf den gerade zugegriffen wird. Steht mmap nicht zur Verfügung, wird die Datei in den Hauptspeicher geladen. Die File-Klasse kümmert sich selbst daraum, dass der Speicher nach Gebrauch wieder zurück in die Datei geschrieben und freigegeben wird.
Ein mit mapRW gemappter Speicher darf sowohl gelesen als auch beschrieben werden! Bevor mit anderen Funktionen auf den gleichen Speicher zugegriffen werden soll (insbesondere schreibend), muss die Funktion FileObject::Unmap aufgerufen werden.
Parameter
[in]positionDie gewünschte Startposition innerhalb der Datei
[in]sizeDie Anzahl Bytes, die gemapped werden sollen.
Rückgabe
Bei Erfolg gibt die Funktion einen Pointer auf den Speicherbereich zurück, in dem sich die Datei befindet, im Fehlerfall wird eine Exception geworfen.

Erneute Implementation in ppl7::File und ppl7::MemFile.

String ppl7::FileObject::md5 ( )
inherited
void ppl7::GzFile::open ( const String filename,
File::FileMode  mode = File::READ 
)
Beschreibung:
Mit dieser Funktion wird eine Datei zum Lesen, Schreiben oder beides geöffnet.
Parameter
[in]filenameDateiname
modeZugriffsmodus
Rückgabe
Kein Rückgabeparameter, im Fehlerfall wirft die Funktion eine Exception
void ppl7::GzFile::open ( const char *  filename,
File::FileMode  mode = File::READ 
)
Beschreibung:
Mit dieser Funktion wird eine Datei zum Lesen, Schreiben oder beides geöffnet.
Parameter
filenameDateiname als C-String
modeString, der angibt, wie die Datei geöffnet werden soll (siehe ppl7_File_Filemodi)
Rückgabe
Kein Rückgabeparameter, im Fehlerfall wirft die Funktion eine Exception
void ppl7::GzFile::open ( int  fd,
File::FileMode  mode = File::READ 
)
ppl7::GzFile::PPL7EXCEPTION ( IllegalFilemodeException  ,
Exception   
)
void ppl7::FileObject::puts ( const String str)
inherited
Beschreibung:
Diese Funktion schreibt den Inhalt des String-Objekts str ohne sein nachfolgendes 0-Byte in den Ausgabestrom.
Parameter
strString-Objekt mit den zu schreibenden Daten
Rückgabe
Kein Rückgabeparameter, im Fehlerfall wirft die Funktion eine Exception
void ppl7::FileObject::putsf ( const char *  fmt,
  ... 
)
inherited
Beschreibung:
Putsf schreibt das Ergebnis nach Kontrolle des Formatierungsstrings fmt und Einsetzen der optionalen Parameter ohne sein nachfolgendes 0-Byte in den Ausgabestrom.
Parameter
fmtPointer auf den Formatierungsstring
...Optionale Parameter, die im Formatierungsstring verwendet werden.
Rückgabe
Kein Rückgabeparameter, im Fehlerfall wirft die Funktion eine Exception
void ppl7::FileObject::putws ( const WideString str)
inherited
Beschreibung:
Diese Funktion schreibt den Inhalt des Wide-Character-String-Objekts str ohne sein nachfolgendes 0-Byte in den Ausgabestrom.
Parameter
strString-Objekt mit den zu schreibenden Daten
Rückgabe
Kein Rückgabeparameter, im Fehlerfall wirft die Funktion eine Exception
size_t ppl7::FileObject::read ( void *  target,
size_t  bytes,
ppluint64  fileposition 
)
inherited
Beschreibung:
Mit dieser Funktion wird beliebiger Bereich der geöffneten Datei in den Hauptspeicher geladen. Die Funktion ist nicht virtuell und existiert nur in der Basisklasse. Sie ruft die virtuellen Funktionen Seek und Fread auf, um den eigentlichen Lesevorgang durchzuführen.
Parameter
targetPointer auf den Speicherbereich, in den die gelesenen Daten geschrieben werden sollen. Dieser muss zuvor vom Aufrufer allokiert worden sein und mindestens bytes gross sein.
bytesAnzahl zu lesender Bytes
filepositionPosition in der Datei, an der die Daten gelesen werden sollen
Rückgabe
Bei Erfolg liefert die Funktion die Anzahl gelesender Bytes zurück. Wenn ein Fehler auftritt oder das Dateiende erreicht ist, wird eine Exception geworfen.
size_t ppl7::FileObject::read ( void *  target,
size_t  bytes 
)
inherited
Beschreibung:
Diese Funktion liest bytes Bytes ab der aktuellen Position des Dateistroms und speichert sie im Hauptspeicher an der duch target bestimmten Position. Die Funktion ist nicht virtuell und existiert nur in der Basisklasse. Sie ruft die virtuellen Funktionen Seek und Fread auf, um den eigentlichen Lesevorgang durchzuführen.
Parameter
targetPointer auf den Speicherbereich, in den die gelesenen Daten geschrieben werden sollen. Dieser muss zuvor vom Aufrufer allokiert worden sein und mindestens bytes gross sein.
bytesAnzahl zu lesender Bytes
Rückgabe
Bei Erfolg liefert die Funktion die Anzahl gelesender Bytes zurück. Wenn ein Fehler auftritt oder das Dateiende erreicht ist, wird eine Exception geworfen.
size_t ppl7::FileObject::read ( ByteArray target,
size_t  bytes 
)
inherited
Beschreibung:
Diese Funktion liest bytes Bytes ab der aktuellen Position des Dateistroms und speichert sie im Objekt target.

Die Funktion ist nicht virtuell und existiert nur in der Basisklasse. Sie ruft die virtuellen Funktionen Seek und Fread auf, um den eigentlichen Lesevorgang durchzuführen.

Parameter
targetDas Objekt, in dem die gelesenen Daten gespeichert werden sollen.
bytesAnzahl zu lesender Bytes
Rückgabe
Bei Erfolg liefert die Funktion die Anzahl gelesender Bytes zurück. Wenn ein Fehler auftritt oder das Dateiende erreicht ist, wird eine Exception geworfen.
void ppl7::GzFile::rewind ( )
virtual
Beschreibung:
Diese Funktion bewegt den internen Dateizeiger an den Anfang der Datei

Erneute Implementation von ppl7::FileObject.

void ppl7::GzFile::seek ( ppluint64  position)
virtual
Beschreibung:
Diese Funktion bewegt den internen Dateizeiger auf die gewünschte Stelle
Parameter
[in]positionGewünschte Position innerhalb der Datei
Ausnahmebehandlung
diverse

Erneute Implementation von ppl7::FileObject.

ppluint64 ppl7::GzFile::seek ( pplint64  offset,
SeekOrigin  origin 
)
virtual
Beschreibung:
Die Funktion seek setzt den Dateipositionszeiger für den Stream. Die neue Position, gemessen in Byte, wird erreicht durch addieren von offset zu der Position, die durch origin angegeben ist. Wenn origin auf SEEK_SET, SEEK_CUR, oder SEEK_END, gesetzt ist, ist der Offset relativ zum Dateianfang, der aktuellen Position, oder dem Dateiende.

Ein erfolgreicher Aufruf der Funktion fseek löscht den Dateiendezeiger für den Stream.

Parameter
offsetAnzahl Bytes, die gesprungen werden soll.
originGibt die Richtung an, in die der Dateizeiger bewegt werden soll. Es kann einen der folgenden Werte annehmen:
  • SEEKSET offset wird vom Beginn der Datei berechnet
  • SEEKCUR offset wird von der aktuellen Dateiposition gerechnet
  • SEEKEND offset wird vom Ende der Datei aus nach vorne berechnet
Rückgabe
Liefert die neue Position zurück, wenn der Dateizeiger erfolgreich auf die gewünschte Position bewegt werden konnte. Im Fehlerfall wird eine Exception geworfen. Die Position des Schreib-/Lesezeigers ist in diesem Fall undefiniert und sollte mittels FileObject::ftell verifiziert werden.

Erneute Implementation von ppl7::FileObject.

void ppl7::FileObject::setFilename ( const char *  filename)
inherited
Include:
#include <ppl7.h>
Beschreibung:
Mit dieser Funktion wird der interne Dateiname festgelegt, der z.B. mit GetFilename ausgelesen werden kann. Die Funktion wird intern auch von den Open-Funktionen mit Dateinamen aufgerufen
Parameter
[in]filenameEin Formatstring oder der Dateiname
[in]...beliebig viele Parameter, sofern filename ein Formatstring ist
void ppl7::FileObject::setFilename ( const String filename)
inherited
Include:
#include <ppl7.h>
Beschreibung:
Mit dieser Funktion wird der interne Dateiname festgelegt, der z.B. mit GetFilename ausgelesen werden kann. Die Funktion wird intern auch von den Open-Funktionen mit Dateinamen aufgerufen
Parameter
[in]filenameEin CString, der den Dateinamen enthält.
void ppl7::FileObject::setMapReadAhead ( size_t  bytes)
virtualinherited
Beschreibung:
Falls mit Map viele aufeinanderfolgende kleine Speicherblöcke gemapped werden, ist es sinnvoll größere Blöcke zu laden, die dann bereits im Cache bzw. Hauptspeicher liegen, wenn sie gebraucht werden. Mit dieser Funktion kann bestimmt werden, wie viele Daten im Voraus gemapped werden sollen.
Parameter
bytesAnzahl Bytes, die im Voraus gemapped werden sollen.

Erneute Implementation in ppl7::File und ppl7::MemFile.

ppluint64 ppl7::FileObject::size ( ) const
virtualinherited
Beschreibung:
Diese Funktion liefert die Größe der geöffneten Datei in Bytes zurück.
Rückgabe
Größe der Datei in Bytes. Falls Fehler auftreten, wird eine Exception geworfen.

Erneute Implementation in ppl7::File und ppl7::MemFile.

void ppl7::FileObject::sync ( )
virtualinherited
Beschreibung:
Für gewöhnlich cached das Betriebssysteme Schreibzugriffe auf die Festplatte, um die Performance zu steigern. Je nach Filesystem und Betriebssystem können zwischen Schreibzugriff der Software bis zum tatsächlichen Schreiben auf die Festplatte zwischen einigen wenigen Sekunden bis zu einer Minute vergehen! Tritt in diesem Zeitraum ein System-Crash oder Stromausfall auf, führt dies unweigerlich zu Datenverlust.

Ein Aufruf dieser Funktion bewirkt, dass alle Dateiänderungen sofort auf die Festplatte geschrieben werden. Sie sollte daher vor dem Schließen einer kritischen Datei mit CFile::Close aufgerufen werden, unter Umständen sogar nach jedem Schreibzugriff.

Rückgabe
Die Funktion kehrt erst zurück, wenn alle Daten vollständig geschrieben wurden und liefert dann true (1) zurück. Können die Daten nicht geschrieben werden, wird eine Exception geworfen.

Erneute Implementation in ppl7::File und ppl7::MemFile.

ppluint64 ppl7::GzFile::tell ( )
virtual
Beschreibung:
Die Funktion tell liefert den aktuellen Wert des Dateipositionszeigers für den Stream zurück.
Rückgabe
Position des Zeigers innerhalb der Datei. Im Fehlerfall wird eine Exception geworfen

Erneute Implementation von ppl7::FileObject.

void ppl7::GzFile::throwErrno ( int  e)
private
Beschreibung:
Diese Funktion wird intern verwendet, um nach Auftreten eines Fehlers, anhand der globalen "errno"-Variablen die passende Exception zu werfen.
Parameter
eErrorcode aus der errno-Variablen
void ppl7::GzFile::throwErrno ( int  e,
const String filename 
)
private
Beschreibung:
Diese Funktion wird intern verwendet, um nach Auftreten eines Fehlers, anhand der globalen "errno"-Variablen die passende Exception zu werfen.
Parameter
eErrorcode aus der errno-Variablen
filenameDateiname, bei der der Fehler aufgetreten ist
void ppl7::FileObject::truncate ( ppluint64  length)
virtualinherited
Beschreibung:
Die Funktionen Truncate bewirkt, dass die aktuell geöffnete Datei auf eine Größe von exakt length Bytes abgeschnitten wird.
Wenn die Datei vorher größer war, gehen überschüssige Daten verloren. Wenn die Datei vorher kleiner war, wird sie vergrößert und die zusätzlichen Bytes werden als Nullen geschrieben.
Der Dateizeiger wird nicht verändert. Die Datei muss zum Schreiben geöffnet sein.
Parameter
lengthPosition, an der die Datei abgeschnitten werden soll.
Rückgabe
Kein Rückgabewert, im Fehlerfall wird eine Exception geworfen.

Erneute Implementation in ppl7::File und ppl7::MemFile.

void ppl7::FileObject::unlock ( )
virtualinherited
Beschreibung:
Mit Unlock wird eine mit lockShared oder lockExclusive eingerichtete Sperre wieder aufgehoben, so dass auch andere Prozesse wieder uneingeschränkt auf die Datei zugreifen können.
Rückgabe
Kein Rückgabewert, im Fehlerfall wird eine Exception geworfen.
Siehe auch
Siehe auch FileObject::lockShared und FileObject::lockExclusive

Erneute Implementation in ppl7::File und ppl7::MemFile.

void ppl7::FileObject::unmap ( )
virtualinherited
Beschreibung:
Ein mit map oder mapRW eingerichtetes Mapping einer Datei in den Hauptspeicher wird wieder aufgehoben.

Erneute Implementation in ppl7::File und ppl7::MemFile.

size_t ppl7::FileObject::write ( const void *  source,
size_t  bytes,
ppluint64  fileposition 
)
inherited
Beschreibung:
Mit dieser Funktion wird ein beliebiger Speicherbereich auf den Datenträger geschrieben. Die Funktion ist nicht virtuell und existiert nur in der Basisklasse. Sie ruft die virtuellen Funktionen Seek und Fwrite auf, um den eigentlichen Schreibvorgang durchzuführen.
Parameter
sourcePointer auf den Speicherbereich, der geschrieben werden soll
bytesAnzahl zu schreibender Bytes
filepositionPosition in der Datei, an der die Daten gespeichert werden solle
Rückgabe
Bei Erfolg liefert die Funktion die Anzahl geschriebener Bytes zurück, im Fehlerfall wird eine Exception geworfen.
size_t ppl7::FileObject::write ( const void *  source,
size_t  bytes 
)
inherited
Beschreibung:
Mit dieser Funktion wird ein beliebiger Speicherbereich auf den Datenträger geschrieben. Die Funktion ist nicht virtuell und existiert nur in der Basisklasse. Sie ruft die virtuellen Funktionen Seek und Fwrite auf, um den eigentlichen Schreibvorgang durchzuführen.
Parameter
sourcePointer auf den Speicherbereich, der geschrieben werden soll
bytesAnzahl zu schreibender Bytes
Rückgabe
Bei Erfolg liefert die Funktion die Anzahl geschriebener Bytes zurück, im Fehlerfall wird eine Exception geworfen.
size_t ppl7::FileObject::write ( const ByteArrayPtr object,
size_t  bytes = 0 
)
inherited
Beschreibung:
Mit dieser Funktion wird der Speicherinhalt eines Variant-Objekts auf den Datenträger geschrieben. Die Funktion ist nicht virtuell und existiert nur in der Basisklasse. Sie ruft die virtuellen Funktionen Seek und fwrite auf, um den eigentlichen Schreibvorgang durchzuführen.
Parameter
objectDas zu speichernde Variant Objekt
bytesAnzahl zu schreibender Bytes
Rückgabe
Bei Erfolg liefert die Funktion die Anzahl geschriebener Bytes zurück, im Fehlerfall wird eine Exception geworfen.

Dokumentation der Datenelemente

char* ppl7::FileObject::buffer
protectedinherited
void* ppl7::GzFile::ff
private

Die Dokumentation für diese Klasse wurde erzeugt aufgrund der Dateien: