#include <pdirect.h>
Inheritance diagram for PDirectory:
Access functions | |
PDirectory | GetParent () const |
PFilePathString | GetVolume () const |
BOOL | IsRoot () const |
PDirectory | GetRoot () const |
PStringArray | GetPath () const |
BOOL | GetVolumeSpace (PInt64 &total, PInt64 &free, DWORD &clusterSize) const |
static PINLINE BOOL | IsSeparator (char ch) |
File system functions | |
BOOL | Exists () const |
BOOL | Change () const |
BOOL | Create (int perm=PFileInfo::DefaultDirPerms) const |
BOOL | Remove () |
static BOOL | Exists (const PString &path) |
static BOOL | Change (const PString &path) |
static BOOL | Create (const PString &p, int perm=PFileInfo::DefaultDirPerms) |
static BOOL | Remove (const PString &path) |
Public Member Functions | |
Construction | |
PDirectory () | |
Create a directory object of the current working directory. | |
PDirectory (const char *cpathname) | |
PDirectory (const PString &pathname) | |
PDirectory & | operator= (const PString &pathname) |
PDirectory & | operator= (const char *cpathname) |
Directory listing functions | |
virtual BOOL | Open (int scanMask=PFileInfo::AllFiles) |
virtual BOOL | Restart (int scanMask=PFileInfo::AllFiles) |
BOOL | Next () |
virtual void | Close () |
Close the directory during or after a file list scan. | |
virtual PFilePathString | GetEntryName () const |
virtual BOOL | IsSubDir () const |
virtual BOOL | GetInfo (PFileInfo &info) const |
Protected Member Functions | |
void | Construct () |
void | Destruct () |
Protected Attributes | |
int | scanMask |
Mask of file types that the directory scan will return. | |
DIR * | directory |
PFileInfo * | entryInfo |
dirent * | entryBuffer |
The directory paths are highly platform dependent and a minimum number of assumptions should be made.
The PDirectory object is a string consisting of a possible volume name, and a series directory names in the path from the volumes root to the directory that the object represents. Each directory is separated by the platform dependent separator character which is defined by the PDIR_SEPARATOR macro. The path always has a trailing separator.
Some platforms allow more than one character to act as a directory separator so when doing any processing the IsSeparator()# function should be used to determine if a character is a possible separator.
The directory may be opened to gain access to the list of files that it contains. Note that the directory does { not} contain the "." and ".." entries that some platforms support.
The ancestor class is dependent on the platform. For file systems that are case sensitive, eg Unix, the ancestor is PString#. For other platforms, the ancestor class is PCaselessString#.
|
Create a directory object of the current working directory.
|
|
Create a directory object of the specified directory. The pathname# parameter may be a relative directory which is made absolute by the creation of the PDirectory# object.
|
|
Create a directory object of the specified directory. The pathname# parameter may be a relative directory which is made absolute by the creation of the PDirectory# object.
|
|
Change the current working directory to that specified..
|
|
Change the current working directory to the objects location.
|
|
Close the directory during or after a file list scan.
|
|
|
|
Create a new directory as specified with the specified permissions.
|
|
Create a new directory with the specified permissions.
|
|
|
|
Test for if the specified directory exists.
|
|
Test for if the directory exists.
|
|
Get the name (without the volume or directory path) of the current entry in the directory scan. This may be the name of a file or a subdirectory or even a link or device for operating systems that support them. To get a full path name concatenate the PDirectory object itself with the entry name. Note that the directory scan will { not} return the "." and ".." entries that some platforms support.
|
|
Get file information on the current directory entry.
|
|
Get the directory for the parent to the current directory. If the directory is already the root directory it returns the root directory again.
|
|
Get the directory path as an array of strings. The first element in the array is the volume string, eg under Win32 it is "c:" or "\\machine", while under unix it is an empty string. |
|
Get the root directory of a volume.
|
|
Get the volume name that the directory is in. This is platform dependent, for example for MS-DOS it is the 11 character volume name for the drive, eg "DOS_DISK", and for Macintosh it is the disks volume name eg "Untitled". For a unix platform it is the device name for the file system eg "/dev/sda1".
|
|
Determine the total number of bytes and number of bytes free on the volume that this directory is contained on. Note that the free space will be the physical limit and if user quotas are in force by the operating system, the use may not actually be able to use all of these bytes.
|
|
Determine if the directory is the root directory of a volume.
|
|
Determine if the character ch# is a directory path separator.
|
|
Determine if the directory entry currently being scanned is itself another directory entry. Note that the directory scan will { not} return the "." and ".." entries that some platforms support.
|
|
Move to the next file in the directory scan. Only files that are of a type that is specified in the mask passed to the Open()# or Restart()# functions will be returned. Note that the directory scan will { not} return the "." and ".." entries that some platforms support.
|
|
Open the directory for scanning its list of files. Once opened the GetEntryName()# function may be used to get the current directory entry and the Next()# function used to move to the next directory entry. Only files that are of a type that is specified in the mask will be returned. Note that the directory scan will { not} return the "." and ".." entries that some platforms support.
|
|
Set the directory to the specified path.
Reimplemented from PString. |
|
Set the directory to the specified path.
Reimplemented from PString. |
|
Delete the specified directory.
|
|
Delete the directory.
|
|
Restart file list scan from the beginning of directory. This is similar to the Open()# command but does not require that the directory be closed (using Close()#) first. Only files that are of a type that is specified in the mask will be returned. Note that the directory scan will { not} return the "." and ".." entries that some platforms support.
|
|
|
|
|
|
|
|
Mask of file types that the directory scan will return.
|