PPL6-Icon Patrick's Programming Library Version 6.4.21 - Dokumentation
ppl6::CDir Klassenreferenz

Klasse zum Durchsuchen von Verzeichnissen. Mehr ...

Öffentliche Typen

enum  Sort {
  Sort_None, Sort_Filename, Sort_Filename_IgnoreCase, Sort_Date,
  Sort_ATime, Sort_CTime, Sort_MTime, Sort_Size
}
 Sortiermöglichkeiten. Mehr ...
 

Öffentliche Methoden

 CDir (const CString &path=CString(), Sort s=Sort_None)
 Konstruktor der Klasse. Mehr ...
 
 ~CDir ()
 Destruktor der Klasse. Mehr ...
 
void Clear ()
 Verzeichnisliste löschen. Mehr ...
 
const CDirEntryGetFirst ()
 Erster Verzeichniseintrag. Mehr ...
 
const CDirEntryGetFirstPattern (const char *pattern, bool ignorecase=false)
 Erster Verzeichniseintrag, der zu einem bestimmten Muster passt. Mehr ...
 
const CDirEntryGetFirstRegExp (const char *regexp)
 Erster Verzeichniseintrag, der zu der angegebenen Regular Expression passt. Mehr ...
 
const CDirEntryGetNext ()
 Nächster Verzeichniseintrag. Mehr ...
 
const CDirEntryGetNextPattern (const char *pattern, bool ignorecase=false)
 Nächster Verzeichniseintrag, der zu einem bestimmten Muster passt. Mehr ...
 
const CDirEntryGetNextRegExp (const char *regexp)
 Nächster Verzeichniseintrag, der zu der angegebenen Regular Expression passt. Mehr ...
 
int Num () const
 Anzahl Dateien. Mehr ...
 
int Open (const CString &path, Sort s=Sort_None)
 Verzeichniss öffnen. Mehr ...
 
void Print ()
 Verzeichnis auf STDOUT ausgeben. Mehr ...
 
void Print (const CDirEntry *de)
 Verzeichnis-Eintrag auf STDOUT ausgeben. Mehr ...
 
void Reset ()
 Zeiger auf den ersten Eintrag des Verzeichnisses. Mehr ...
 
void Resort (Sort s)
 Sortierung ändern. Mehr ...
 

Öffentliche, statische Methoden

static CString CurrentPath ()
 Aktuelles Verzeichnis. Mehr ...
 
static CString homePath ()
 Homeverzeichnis des aktuellen Users. Mehr ...
 
static CString tempPath ()
 Verzeichnis für temporäre Dateien. Mehr ...
 

Private Methoden

void resortATime ()
 Dateien nach Datum des letzten Zugriffs sortieren. Mehr ...
 
void resortCTime ()
 Dateien nach Datum der letzten Statusänderung sortieren. Mehr ...
 
void resortFilename ()
 Dateien nach Dateiname sortieren. Mehr ...
 
void resortFilenameIgnoreCase ()
 Dateien nach Dateiname sortieren, Gross-/Kleinschreibung wird ignoriert. Mehr ...
 
void resortMTime ()
 Dateien nach Modifizierungsdatum sortieren. Mehr ...
 
void resortNone ()
 Dateien unsortiert belassen. Mehr ...
 
void resortSize ()
 Dateien nach Dateigröße sortieren. Mehr ...
 

Private Attribute

ppl6::List< CDirEntryFiles
 
ppl6::List< const CDirEntry * >
::Iterator 
myit
 
CString Path
 
Sort sort
 
ppl6::List< const CDirEntry * > SortedFiles
 

Ausführliche Beschreibung

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.

Dokumentation der Aufzählungstypen

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 Konstruktoren und Destruktoren

ppl6::CDir::CDir ( const CString path = CString(),
Sort  s = Sort_None 
)
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]pathZu öffnender Pfad (siehe auch CDir::Open)
[in]sgewünschte Sortierreihenfolge. Defaultmäßig wird keine Sortierung verwendet.
ppl6::CDir::~CDir ( )
Beschreibung:
Der Destruktor sorgt dafür, dass der intern reservierte Speicher wieder freigegeben wird.

Dokumentation der Elementfunktionen

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.
const CDirEntry * ppl6::CDir::GetFirst ( )
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]patternEin 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]ignorecaseWird 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]regexpEine 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.
const CDirEntry * ppl6::CDir::GetNext ( )
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]patternEin 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]ignorecaseWird 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]regexpEine 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
int ppl6::CDir::Open ( const CString path,
Sort  s = Sort_None 
)
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]pathDer gewünschte Pfad. Unter Windows können hier sowohl die Windows-typischen Backslashes verwendet werden, als auch die Unix-typischen Slashes.
[in]sOptional 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]dePointer 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]sDie gewünschte Sortierreihenfolge. Siehe dazu auch die Enumeration Dir::Sort
Ausnahmebehandlung
IllegalArgumentExceptionWird 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.

Dokumentation der Datenelemente

ppl6::List<CDirEntry> ppl6::CDir::Files
private
ppl6::List<const CDirEntry*>::Iterator ppl6::CDir::myit
private
CString ppl6::CDir::Path
private
Sort ppl6::CDir::sort
private
ppl6::List<const CDirEntry*> ppl6::CDir::SortedFiles
private

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