Klasse zum Durchsuchen von Verzeichnissen.
Mehr ...
- Beschreibung:
- Die Klasse CDir wird zum Lesen von Verzeichnissen verwendet. Dazu muss man zunächst mit CDir::Open ein Verzeichnis öffnen oder das gewünschte Verzeichnis gleich im Konstruktor angeben. Anschließend kann man mit den Funktionen CDir::GetFirst und CDir::GetNext die einzelnen Dateien auslesen. Diese sind bereits nach Dateiname sortiert. Mit dem Befehl CDir::Resort kann man aber jederzeit eine andere Sortierung einstellen oder diese ganz abschalten.
- Möchte man nur Dateien, die einem bestimmten Muster (Pattern) entsprechen, kann man statt CDir::GetFirst und CDir::GetNext auch CDir::GetFirstPattern und CDir::GetNextPattern verwenden, oder falls mal Regular Expressions verwenden möchte, CDir::GetFirstRegExp und CDir::GetNextRegExp.
- Seit
- Die Klasse gibt es schön länger, sie wurde jedoch in Version 6.3.0 komplett überarbeitet.
In dieser Enumeration sind die verschiedenen Sortiermöglichkeiten definiert:
Aufzählungswerte |
---|
Sort_None |
Keine Sortierung. Die Reihenfolge der Dateien hängt fom Betriebs- und Filesystem ab.
|
Sort_Filename |
Es wird eine Sortierung anhand der Dateinamen vorgenommen. Dabei wird Groß- und Kleinschreibung beachtet. Dateien, die mit einem Großbuchstaben beginnen, werden zuerst aufgelistet, danach Dateien mit Kleinbuchstaben.
|
Sort_Filename_IgnoreCase |
Es wird eine Sortierung anhand der Dateinamen vorgenommen. Dabei wird Groß- und Kleinschreibung ignoriert. Dateien mit Großbuchstaben und Kleinbuchstaben werden vermischt ausgegeben, wobei jedoch die Alphabetische Reihenfolge erhalten bleibt.
|
Sort_Date |
Es wird eine Sortierung nach dem Datum der letzten Modifizierung vorgenommen.
|
Sort_ATime |
|
Sort_CTime |
|
Sort_MTime |
|
Sort_Size |
|
- Beschreibung:
- Der Konstruktor sorgt dafür, dass die internen Variablen und Datenstrukturen initialisert werden. Optional kann auch schon mit dem Parameter
path
ein zu öffnender Pfad angegeben werden und mit s
eine Sortierreihenfolge.
- Parameter
-
[in] | path | Zu öffnender Pfad (siehe auch CDir::Open) |
[in] | s | gewünschte Sortierreihenfolge. Defaultmäßig wird keine Sortierung verwendet. |
- Beschreibung:
- Der Destruktor sorgt dafür, dass der intern reservierte Speicher wieder freigegeben wird.
void ppl6::CDir::Clear |
( |
| ) |
|
- Beschreibung:
- Wird diese Funktion nach CDir::Open aufgerufen, wird die interne Dateiliste wieder gelöscht. Die Funktion wird automatisch vom Destruktor und zu Beginn von CDir::Open, so dass sich ein manueller Aufruf der Funktion in der Regel erübrigt.
- Beschreibung:
- Durch Aufruf dieser Funktion wird der interne Zeiger auf die erste gefundene Datei gesetzt und ein Pointer auf dessen CDirEntry-Struktur zurückgegeben. Alle weiteren Dateien können mit CDir::GetNext ausgelesen werden.
- Die Reihenfolge der durch CDir::GetFirst und CDir::GetNext zurückgelieferten Dateien hängt von der eingestellten Sortierung ab. Siehe dazu CDir::Sort, CDir::Resort und CDir::Open
- Rückgabe
- Pointer auf die erste Datei des Verzeichnisses, oder NULL wenn das Verzeichnis leer ist oder kein gültiges Verzeichnis ausgewählt wurde.
const CDirEntry * ppl6::CDir::GetFirstPattern |
( |
const char * |
pattern, |
|
|
bool |
ignorecase = false |
|
) |
| |
- Beschreibung:
- Durch Aufruf dieser Funktion wird die erste Datei aus dem Verzeichnis zurückgeliefert, die zu dem angegebenen Muster
pattern
passt. Alle weiteren Dateien können mit CDir::GetNextPattern ausgelesen werden.
- Die Reihenfolge der durch CDir::GetFirstPattern und CDir::GetNextPattern zurückgelieferten Dateien hängt von der eingestellten Sortierung ab. Siehe dazu CDir::Sort, CDir::Resort und CDir::Open
- Parameter
-
[in] | pattern | Ein beliebiges Suchpattern, wie es auch beim Unix-Befehl "ls" oder mit "dir" unter Windows angegeben werden kann. Dabei sind die Wildcards "*" und "?" erlaubt. Das Sternchen "*" steht dabei für beliebig viele Zeichen, das Fragezeichen "?" für ein einzelnes. |
[in] | ignorecase | Wird diese Variable auf "true" gesetzt, wird Groß- und Kleinschreibung ignoriert. Wird als Pattern beispielsweise "*.TXT" angegeben, würde auch "*.txt" passen. Der Default ist "false" |
- Rückgabe
- Pointer auf die erste Datei des Verzeichnisses, die zum angegebenen Muster passt, oder NULL wenn keine Datei passt, das Verzeichnis leer ist oder kein gültiges Verzeichnis ausgewählt wurde.
const CDirEntry * ppl6::CDir::GetFirstRegExp |
( |
const char * |
regexp | ) |
|
- Beschreibung:
- Durch Aufruf dieser Funktion wird die erste Datei aus dem Verzeichnis zurückgeliefert, die zu der angegebenen Regular Expression
regexp
passt. Alle weiteren Dateien können mit CDir::GetNextRegExp ausgelesen werden.
- Die Reihenfolge der durch CDir::GetFirstRegExp und CDir::GetNextRegExp zurückgelieferten Dateien hängt von der eingestellten Sortierung ab. Siehe dazu CDir::Sort, CDir::Resort und CDir::Open
- Parameter
-
[in] | regexp | Eine beliebige Perl kompatible Regular Expression. Beispiel:"/^*.txt$/i" |
- Rückgabe
- Pointer auf die erste Datei des Verzeichnisses, oder NULL wenn das Verzeichnis leer ist, kein Dateiname auf die angegebene Regular Expression passt oder kein gültiges Verzeichnis ausgewählt wurde.
- Beschreibung:
- Diese Funktion liefert die nächste Datei aus dem geöffneten Verzeichnis zurück.
- Die Reihenfolge der durch CDir::GetFirst und CDir::GetNext zurückgelieferten Dateien hängt von der eingestellten Sortierung ab. Siehe dazu CDir::Sort, CDir::Resort und CDir::Open
- Rückgabe
- Pointer auf die nächste Datei des Verzeichnisses, oder NULL, wenn keine weiteren Dateien vorhanden sind, das Verzeichnis leer ist oder kein gültiges Verzeichnis ausgewählt wurde.
const CDirEntry * ppl6::CDir::GetNextPattern |
( |
const char * |
pattern, |
|
|
bool |
ignorecase = false |
|
) |
| |
- Beschreibung:
- Diese Funktion liefert die nächste Datei aus dem geöffneten Verzeichnis zurück, die zu dem angegebenen Muster
pattern
passt.
- Die Reihenfolge der durch CDir::GetFirstPattern und CDir::GetNextPattern zurückgelieferten Dateien hängt von der eingestellten Sortierung ab. Siehe dazu CDir::Sort, CDir::Resort und CDir::Open
- Parameter
-
[in] | pattern | Ein beliebiges Suchpattern, wie es auch beim Unix-Befehl "ls" oder mit "dir" unter Windows angegeben werden kann. Dabei sind die Wildcards "*" und "?" erlaubt. Das Sternchen "*" steht dabei für beliebig viele Zeichen, das Fragezeichen "?" für ein einzelnes. |
[in] | ignorecase | Wird diese Variable auf "true" gesetzt, wird Groß- und Kleinschreibung ignoriert. Wird als Pattern beispielsweise "*.TXT" angegeben, würde auch "*.txt" passen. Der Default ist "false" |
- Rückgabe
- Pointer auf die nächste Datei des Verzeichnisses, oder NULL, wenn keine weiteren Dateien vorhanden sind, die auf das Muster passen, das Verzeichnis leer ist oder kein gültiges Verzeichnis ausgewählt wurde.
const CDirEntry * ppl6::CDir::GetNextRegExp |
( |
const char * |
regexp | ) |
|
- Beschreibung:
- Diese Funktion liefert die nächste Datei aus dem geöffneten Verzeichnis zurück, die zu der angegebenen Regular Expression
regexp
passt.
- Die Reihenfolge der durch CDir::GetFirstRegExp und CDir::GetNextRegExp zurückgelieferten Dateien hängt von der eingestellten Sortierung ab. Siehe dazu CDir::Sort, CDir::Resort und CDir::Open
- Parameter
-
[in] | regexp | Eine beliebige Perl kompatible Regular Expression. Beispiel:"/^*.txt$/i" |
- Rückgabe
- Pointer auf die nächste Datei des Verzeichnisses, oder NULL wenn das Verzeichnis leer ist, kein weiterer Dateiname auf die angegebene Regular Expression passt oder kein gültiges Verzeichnis ausgewählt wurde.
int ppl6::CDir::Num |
( |
| ) |
const |
- Beschreibung:
- Diese Funktion liefert die Anzahl Dateien im geöffneten Verzeichnis zurück. Sie gibt daher erst nach Aufruf von CDir::Open einen korrekten Wert zurück.
- Rückgabe
- Beschreibung:
- Mit diesem Befehl wird ein Verzeichnis geöffnet. Dabei werden alle im angegebenen Pfad
path
befindlichen Dateinamen und deren Attribute eingelesen und in einer internen Liste gespeichert. Diese kann mit den Get-Befehlen ausgelesen werden. Sofern auch eine Sortierung gewünscht war (Aufruf von CDir::Resort oder Parameter s
dieser Funktion) werden die Dateien zusätzlich auch noch in einem binären AVL-Baum abgelegt.
- Parameter
-
[in] | path | Der gewünschte Pfad. Unter Windows können hier sowohl die Windows-typischen Backslashes verwendet werden, als auch die Unix-typischen Slashes. |
[in] | s | Optional die gewünschte Sortierung. Diese kann auch nachträglich noch mit CDir::Resort verändert werden. Für die möglichen Konstanten, siehe CDir::Sort |
- Rückgabe
- Konnte das Verzeichnis erfolgreich eingelesen werden, liefert die Funktion 1 zurück, im Fehlerfall 0
- Siehe auch
-
void ppl6::CDir::Print |
( |
| ) |
|
Mit dieser Funktion wird das mit CDir::Open ausgewählte Verzeichnis auf STDOUT ausgegeben.
void ppl6::CDir::Print |
( |
const CDirEntry * |
de | ) |
|
Mit dieser Funktion kann ein Verzeichniseintrag auf STDOUT ausgegeben werden. Die Ausgabe ist ähnlich der des "ls"-Befehls unter Unix, enthält jedoch nicht die Benutzerrechte. Die Funktion wurde hauptsächlich zu Debuggingzwecken eingebaut.
- Parameter
-
[in] | de | Pointer auf einen Verzeichniseintrag |
void ppl6::CDir::Reset |
( |
| ) |
|
- Beschreibung:
- Mit dieser Funktion wird der interne Zeiger auf den ersten Eintrag im Verzeichnis gesetzt. Der nächste Aufruf von einer der "GetNext..."-Funktionen würde somit den ersten Eintrag zurückliefern.
void ppl6::CDir::Resort |
( |
Sort |
s | ) |
|
- Beschreibung:
- Durch Aufruf dieser Funktion kann die Sortierreihenfolge für die get...-Befehle geändert werden. Standardmäßig werden die Dateien unsortiert zurückgegeben. Die Reihenfolge hängt somit im Wesentlichen davon ab, in welcher Reihenfolge die Dateien erstellt wurden, aber auch von Betriebs- und Filesystemabhängigen Vorgängen.
- Die Sortierreihenfolge läßt sich jederzeit durch Aufruf dieser Funktion ändern.
- Parameter
-
[in] | s | Die gewünschte Sortierreihenfolge. Siehe dazu auch die Enumeration Dir::Sort |
- Ausnahmebehandlung
-
IllegalArgumentException | Wird geworfen, wenn eine ungültige Sortiermethode angegeben wird |
void ppl6::CDir::resortATime |
( |
| ) |
|
|
private |
- Beschreibung:
- Diese interne Funktion sortiert das durch Dir::open eingescannte Verzeichnis nach dem Zeitstempel des letzten Zugriffs auf die Datei. Falls mehrere Dateien den gleichen Zeitstempel haben, ist deren Reihenfolge unbestimmt.
- Die Funktion wird von Dir::resort in Abhängigkeit des eingestellten Sortieralgorithmus aufgerufen.
void ppl6::CDir::resortCTime |
( |
| ) |
|
|
private |
- Beschreibung:
- Diese interne Funktion sortiert das durch Dir::open eingescannte Verzeichnis nach dem Zeitstempel der letzten Statusänderung der Dateien. Eine Statusänderung besteht nicht nur bei Neuanlage und Schreibzugriff, sondern auch bei Änderung der Zugriffsrechte oder Verlinkung. Falls mehrere Dateien den gleichen Zeitstempel haben, ist deren Reihenfolge unbestimmt.
- Die Funktion wird von Dir::resort in Abhängigkeit des eingestellten Sortieralgorithmus aufgerufen.
void ppl6::CDir::resortFilename |
( |
| ) |
|
|
private |
- Beschreibung:
- Diese interne Funktion sortiert das durch Dir::open eingescannte Verzeichnis nach Dateiname, unter Beachtung von Gross-/Kleinschreibung. Die Funktion wird von Dir::resort in Abhängigkeit des eingestellten Sortieralgorithmus aufgerufen.
void ppl6::CDir::resortFilenameIgnoreCase |
( |
| ) |
|
|
private |
- Beschreibung:
- Diese interne Funktion sortiert das durch Dir::open eingescannte Verzeichnis nach Dateiname, wobei Gross-/Kleinschreibung ignoriert wird. Die Funktion wird von Dir::resort in Abhängigkeit des eingestellten Sortieralgorithmus aufgerufen.
void ppl6::CDir::resortMTime |
( |
| ) |
|
|
private |
- Beschreibung:
- Diese interne Funktion sortiert das durch Dir::open eingescannte Verzeichnis nach dem Modifikations-Zeitstempel der Dateien. Dieser Zeitstempel ändert sich nur bei Neuanlage der Datei oder des Verzeichnisses, oder wenn ein Schreibzugriff stattgefunden hat. Falls mehrere Dateien den gleichen Zeitstempel haben, ist deren Reihenfolge unbestimmt.
- Die Funktion wird von Dir::resort in Abhängigkeit des eingestellten Sortieralgorithmus aufgerufen.
void ppl6::CDir::resortNone |
( |
| ) |
|
|
private |
- Beschreibung:
- Diese interne Funktion kopiert lediglich das von Dir::open eingescannte Verzeichnis unsortiert in die von den Iterationsfunktionen verwendete Liste. Die Funktion wird von Dir::resort in Abhängigkeit des eingestellten Sortieralgorithmus aufgerufen.
void ppl6::CDir::resortSize |
( |
| ) |
|
|
private |
- Beschreibung:
- Diese interne Funktion sortiert das durch Dir::open eingescannte Verzeichnis nach der Größe der Dateien. Falls mehrere Dateien mit gleicher Größe vorhanden sind, ist deren Reihenfolge unbestimmt.
- Die Funktion wird von Dir::resort in Abhängigkeit des eingestellten Sortieralgorithmus aufgerufen.
Die Dokumentation für diese Klasse wurde erzeugt aufgrund der Dateien:
- /jenkins/jobs/clang_ppl6/workspace/include/ppl6.h
- /jenkins/jobs/clang_ppl6/workspace/src/core/CDir.cpp