ISLEman
Public Types | Public Member Functions | Static Public Member Functions | List of all members
QDir Class Reference

Traverses directory structures and contents in a platform-independent way. More...

#include <qdir.h>

Public Types

enum  FilterSpec {
  Dirs = 0x001, Files = 0x002, Drives = 0x004, NoSymLinks = 0x008,
  All = 0x007, TypeMask = 0x00F, Readable = 0x010, Writable = 0x020,
  Executable = 0x040, RWEMask = 0x070, Modified = 0x080, Hidden = 0x100,
  System = 0x200, AccessMask = 0x3F0, DefaultFilter = -1
}
 
enum  SortSpec {
  Name = 0x00, Time = 0x01, Size = 0x02, Unsorted = 0x03,
  SortByMask = 0x03, DirsFirst = 0x04, Reversed = 0x08, IgnoreCase = 0x10,
  DefaultSort = -1
}
 

Public Member Functions

 QDir ()
 
 QDir (const QString &path, const QString &nameFilter=QString::null, int sortSpec=Name|IgnoreCase, int filterSpec=All)
 
 QDir (const QDir &)
 
virtual ~QDir ()
 
QDiroperator= (const QDir &)
 
QDiroperator= (const QString &path)
 
virtual void setPath (const QString &path)
 
virtual QString path () const
 
virtual QString absPath () const
 
virtual QString canonicalPath () const
 
virtual QString dirName () const
 
virtual QString filePath (const QString &fileName, bool acceptAbsPath=TRUE) const
 
virtual QString absFilePath (const QString &fileName, bool acceptAbsPath=TRUE) const
 
virtual bool cd (const QString &dirName, bool acceptAbsPath=TRUE)
 
virtual bool cdUp ()
 
QString nameFilter () const
 
virtual void setNameFilter (const QString &nameFilter)
 
FilterSpec filter () const
 
virtual void setFilter (int filterSpec)
 
SortSpec sorting () const
 
virtual void setSorting (int sortSpec)
 
bool matchAllDirs () const
 
virtual void setMatchAllDirs (bool)
 
uint count () const
 
QString operator[] (int) const
 
virtual QStrList encodedEntryList (int filterSpec=DefaultFilter, int sortSpec=DefaultSort) const
 
virtual QStrList encodedEntryList (const QString &nameFilter, int filterSpec=DefaultFilter, int sortSpec=DefaultSort) const
 
virtual QStringList entryList (int filterSpec=DefaultFilter, int sortSpec=DefaultSort) const
 
virtual QStringList entryList (const QString &nameFilter, int filterSpec=DefaultFilter, int sortSpec=DefaultSort) const
 
virtual const QFileInfoListentryInfoList (int filterSpec=DefaultFilter, int sortSpec=DefaultSort) const
 
virtual const QFileInfoListentryInfoList (const QString &nameFilter, int filterSpec=DefaultFilter, int sortSpec=DefaultSort) const
 
virtual bool mkdir (const QString &dirName, bool acceptAbsPath=TRUE) const
 
virtual bool rmdir (const QString &dirName, bool acceptAbsPath=TRUE) const
 
virtual bool isReadable () const
 
virtual bool exists () const
 
virtual bool isRoot () const
 
virtual bool isRelative () const
 
virtual void convertToAbs ()
 
virtual bool operator== (const QDir &) const
 
virtual bool operator!= (const QDir &) const
 
virtual bool remove (const QString &fileName, bool acceptAbsPath=TRUE)
 
virtual bool rename (const QString &name, const QString &newName, bool acceptAbsPaths=TRUE)
 
virtual bool exists (const QString &name, bool acceptAbsPath=TRUE)
 

Static Public Member Functions

static QString convertSeparators (const QString &pathName)
 
static const QFileInfoListdrives ()
 
static char separator ()
 
static bool setCurrent (const QString &path)
 
static QDir current ()
 
static QDir home ()
 
static QDir root ()
 
static QString currentDirPath ()
 
static QString homeDirPath ()
 
static QString rootDirPath ()
 
static bool match (const QStringList &filters, const QString &fileName)
 
static bool match (const QString &filter, const QString &fileName)
 
static QString cleanDirPath (const QString &dirPath)
 
static bool isRelativePath (const QString &path)
 

Detailed Description

Traverses directory structures and contents in a platform-independent way.

A QDir can point to a file using either a relative or an absolute file path. Absolute file paths begin with the directory separator ('/') or a drive specification (not applicable to UNIX). Relative file names begin with a directory name or a file name and specify a path relative to the current directory.

An example of an absolute path is the string "/tmp/quartz", a relative path might look like "src/fatlib". You can use the function isRelative() to check if a QDir is using a relative or an absolute file path. You can call the function convertToAbs() to convert a relative QDir to an absolute one.

The directory "example" under the current directory is checked for existence in the example below:

QDir d( "example" ); // "./example"
if ( !d.exists() )
qWarning( "Cannot find the example directory" );

If you always use '/' as a directory separator, Qt will translate your paths to conform to the underlying operating system.

cd() and cdUp() can be used to navigate the directory tree. Note that the logical cd and cdUp operations are not performed if the new directory does not exist.

Example:

QDir d = QDir::root(); // "/"
if ( !d.cd("tmp") ) { // "/tmp"
qWarning( "Cannot find the \"/tmp\" directory" );
} else {
QFile f( d.filePath("ex1.txt") ); // "/tmp/ex1.txt"
if ( !f.open(IO_ReadWrite) )
qWarning( "Cannot create the file %s", f.name() );
}

To read the contents of a directory you can use the entryList() and entryInfoList() functions.

Example:

#include <stdio.h>
#include <qdir.h>
//
// This program scans the current directory and lists all files
// that are not symbolic links, sorted by size with the smallest files
// first.
//
int main( int argc, char **argv )
{
QDir d;
d.setFilter( QDir::Files | QDir::Hidden | QDir::NoSymLinks );
d.setSorting( QDir::Size | QDir::Reversed );
const QFileInfoList *list = d.entryInfoList();
QFileInfoListIterator it( *list ); // create list iterator
QFileInfo *fi; // pointer for traversing
printf( " BYTES FILENAME\n" ); // print header
while ( (fi=it.current()) ) { // for each file...
printf( "%10li %s\n", fi->size(), fi->fileName().data() );
++it; // goto next list element
}
}

Member Enumeration Documentation

§ FilterSpec

This enum describes how QDir is to select what entries in a directory to return. The filter value is specified by or-ing together values from the following list:

  • Dirs - List directories only
  • Files - List files only

  • Drives - List disk drives (does nothing under unix)
  • NoSymLinks - Do not list symbolic links (where they exist)
  • Readable - List files for which the application has read access.
  • Writable - List files for which the application has write access.
  • Executable - List files for which the application has execute access
  • Modified - Only list files that have been modified (does nothing under unix)
  • Hidden - List hidden files (on unix, files starting with a .)
  • System - List system files (does nothing under unix)

If you do not set any of Readable, Writable or Executable, QDir will set all three of them. This makes the default easy to write and at the same time useful.

Examples: Readable|Writable means list all files for which the application has read access, write access or both. Dirs|Drives means list drives, directories, all files that the application can read, write or execute, and also symlinks to such files/directories.

§ SortSpec

This enum describes how QDir is to sort entries in a directory when it returns a list of them. The sort value is specified by or-ing together values from the following list:

  • Name - sort by name
  • Time - sort by time (modification time)
  • Size - sort by file size
  • Unsorted - do not sort

  • DirsFirst - put all directories first in the list
  • Reversed - reverse the sort order
  • IgnoreCase - sort case-insensitively

You can only specify one of the first four. If you specify both DirsFirst and Reversed, directories are still put first but the list is otherwise reversed.

Constructor & Destructor Documentation

§ QDir() [1/3]

QDir::QDir ( )

Constructs a QDir pointing to the current directory.

See also
currentDirPath()

§ QDir() [2/3]

QDir::QDir ( const QString path,
const QString nameFilter = QString::null,
int  sortSpec = Name | IgnoreCase,
int  filterSpec = All 
)

Constructs a QDir.

  • path is the directory.
  • nameFilter is the file name filter.
  • sortSpec is the sort specification, which describes how to sort the files in the directory.
  • filterSpec is the filter specification, which describes how to filter the files in the directory.

Most of these arguments (except path) have optional values.

Example:

// lists all files in /tmp
QDir d( "/tmp" );
for ( int i=0; i<d.count(); i++ )
printf( "%s\n", d[i] );

If path is "" or null, the directory is set to "." (the current directory). If nameFilter is "" or null, it is set to "*" (all files).

No check is made to ensure that the directory exists.

See also
exists(), setPath(), setNameFilter(), setFilter(), setSorting()

§ QDir() [3/3]

QDir::QDir ( const QDir d)

Constructs a QDir that is a copy of the given directory.

See also
operator=()

§ ~QDir()

QDir::~QDir ( )
virtual

Destructs the QDir and cleans up.

Member Function Documentation

§ absFilePath()

QString QDir::absFilePath ( const QString fileName,
bool  acceptAbsPath = TRUE 
) const
virtual

Returns the absolute path name of a file in the directory. Does NOT check if the file actually exists in the directory. Redundant multiple separators or "." and ".." directories in fileName will NOT be removed (see cleanDirPath()).

If acceptAbsPath is TRUE a fileName starting with a separator ('/') will be returned without change. if acceptAbsPath is FALSE an absolute path will be appended to the directory path.

See also
filePath()

§ absPath()

QString QDir::absPath ( ) const
virtual

Returns the absolute (a path that starts with '/') path, which may contain symbolic links, but never contains redundant ".", ".." or multiple separators.

See also
setPath(), canonicalPath(), exists(), cleanDirPath(), dirName(), absFilePath()

§ cd()

bool QDir::cd ( const QString dirName,
bool  acceptAbsPath = TRUE 
)
virtual

Changes directory by descending into the given directory. Returns TRUE if the new directory exists and is readable. Note that the logical cd operation is NOT performed if the new directory does not exist.

If acceptAbsPath is TRUE a path starting with a separator ('/') will cd to the absolute directory, if acceptAbsPath is FALSE any number of separators at the beginning of dirName will be removed.

Example:

QDir d = QDir::home(); // now points to home directory
if ( !d.cd("c++") ) { // now points to "c++" under home directory if OK
QFileInfo fi( d, "c++" );
if ( fi.exists() ) {
if ( fi.isDir() )
qWarning( "Cannot cd into \"%s\".", (char*)d.absFilePath("c++") );
else
qWarning( "Cannot create directory \"%s\"\n"
"A file named \"c++\" already exists in \"%s\"",
(const char *)d.absFilePath("c++"),
(const char *)d.path() );
return;
} else {
qWarning( "Creating directory \"%s\"",
(const char *) d.absFilePath("c++") );
if ( !d.mkdir( "c++" ) ) {
qWarning("Could not create directory \"%s\"",
(const char *)d.absFilePath("c++") );
return;
}
}
}

Calling cd( ".." ) is equivalent to calling cdUp().

See also
cdUp(), isReadable(), exists(), path()

§ cdUp()

bool QDir::cdUp ( )
virtual

Changes directory by moving one directory up the path followed to arrive at the current directory.

Returns TRUE if the new directory exists and is readable. Note that the logical cdUp() operation is not performed if the new directory does not exist.

See also
cd(), isReadable(), exists(), path()

§ cleanDirPath()

QString QDir::cleanDirPath ( const QString filePath)
static

Removes all multiple directory separators ('/') and resolves any "." or ".." found in the path.

Symbolic links are kept. This function does not return the canonical path, but rather the most simplified version of the input. "../stuff" becomes "stuff", "stuff/../nonsense" becomes "nonsense" and "\\stuff\\more\\..\\nonsense" becomes "\\stuff\\nonsense".

See also
absPath() canonicalPath()

§ convertSeparators()

QString QDir::convertSeparators ( const QString pathName)
static

Converts the '/' separators in pathName to system native separators. Returns the translated string.

On Windows, convertSeparators("c:/winnt/system32") returns "c:\winnt\system32".

No conversion is done on UNIX.

§ convertToAbs()

void QDir::convertToAbs ( )
virtual

Converts the directory path to an absolute path. If it is already absolute nothing is done.

See also
isRelative()

§ count()

uint QDir::count ( ) const

Returns the number of files that was found. Equivalent to entryList().count().

See also
operator[](), entryList()

§ current()

QDir QDir::current ( )
static

Returns the current directory.

See also
currentDirPath(), QDir::QDir()

§ dirName()

QString QDir::dirName ( ) const
virtual

Returns the name of the directory, this is NOT the same as the path, e.g. a directory with the name "mail", might have the path "/var/spool/mail". If the directory has no name (e.g. the root directory) a null string is returned.

No check is made to ensure that a directory with this name actually exists.

See also
path(), absPath(), absFilePath(), exists(), QString::isNull()

§ encodedEntryList() [1/2]

QStrList QDir::encodedEntryList ( int  filterSpec = DefaultFilter,
int  sortSpec = DefaultSort 
) const
virtual

This function is included to easy porting from Qt 1.x to Qt 2.0, it is the same as entryList(), but encodes the filenames as 8-bit strings using QFile::encodedName().

It is more efficient to use entryList().

§ encodedEntryList() [2/2]

QStrList QDir::encodedEntryList ( const QString nameFilter,
int  filterSpec = DefaultFilter,
int  sortSpec = DefaultSort 
) const
virtual

This function is included to easy porting from Qt 1.x to Qt 2.0, it is the same as entryList(), but encodes the filenames as 8-bit strings using QFile::encodedName().

It is more efficient to use entryList().

§ entryInfoList() [1/2]

const QFileInfoList * QDir::entryInfoList ( int  filterSpec = DefaultFilter,
int  sortSpec = DefaultSort 
) const
virtual

Returns a list of QFileInfo objects for all files and directories in the directory pointed to using the setSorting(), setFilter() and setNameFilter() specifications.

The the filter and sorting specifications can be overridden using the filterSpec and sortSpec arguments.

Returns 0 if the directory is unreadable or does not exist.

The returned pointer is a const pointer to a QFileInfoList. The list is owned by the QDir object and will be reused on the next call to entryInfoList() for the same QDir instance. If you want to keep the entries of the list after a subsequent call to this function you will need to copy them.

See also
entryList(), setNameFilter(), setSorting(), setFilter()

§ entryInfoList() [2/2]

const QFileInfoList * QDir::entryInfoList ( const QString nameFilter,
int  filterSpec = DefaultFilter,
int  sortSpec = DefaultSort 
) const
virtual

Returns a list of QFileInfo objects for all files and directories in the directory pointed to using the setSorting(), setFilter() and setNameFilter() specifications.

The the filter and sorting specifications can be overridden using the nameFilter, filterSpec and sortSpec arguments.

Returns 0 if the directory is unreadable or does not exist.

The returned pointer is a const pointer to a QFileInfoList. The list is owned by the QDir object and will be reused on the next call to entryInfoList() for the same QDir instance. If you want to keep the entries of the list after a subsequent call to this function you will need to copy them.

See also
entryList(), setNameFilter(), setSorting(), setFilter()

§ entryList() [1/2]

QStringList QDir::entryList ( int  filterSpec = DefaultFilter,
int  sortSpec = DefaultSort 
) const
virtual

Returns a list of the names of all files and directories in the directory indicated by the setSorting(), setFilter() and setNameFilter() specifications.

The the filter and sorting specifications can be overridden using the filterSpec and sortSpec arguments.

Returns an empty list if the directory is unreadable or does not exist.

See also
entryInfoList(), setNameFilter(), setSorting(), setFilter(), encodedEntryList()

§ entryList() [2/2]

QStringList QDir::entryList ( const QString nameFilter,
int  filterSpec = DefaultFilter,
int  sortSpec = DefaultSort 
) const
virtual

Returns a list of the names of all files and directories in the directory indicated by the setSorting(), setFilter() and setNameFilter() specifications.

The the filter and sorting specifications can be overridden using the nameFilter, filterSpec and sortSpec arguments.

Returns and empty list if the directory is unreadable or does not exist.

See also
entryInfoList(), setNameFilter(), setSorting(), setFilter(), encodedEntryList()

§ exists() [1/2]

bool QDir::exists ( ) const
virtual

Returns TRUE if the directory exists. (If a file with the same name is found this function will of course return FALSE).

See also
QFileInfo::exists(), QFile::exists()

§ exists() [2/2]

bool QDir::exists ( const QString name,
bool  acceptAbsPath = TRUE 
)
virtual

Checks for existence of a file.

If acceptAbsPaths is TRUE a path starting with a separator ('/') will check the file with the absolute path, if acceptAbsPath is FALSE any number of separators at the beginning of name will be removed.

Returns TRUE if the file exists, otherwise FALSE.

See also
QFileInfo::exists(), QFile::exists()

§ filePath()

QString QDir::filePath ( const QString fileName,
bool  acceptAbsPath = TRUE 
) const
virtual

Returns the path name of a file in the directory. Does NOT check if the file actually exists in the directory. If the QDir is relative the returned path name will also be relative. Redundant multiple separators or "." and ".." directories in fileName will not be removed (see cleanDirPath()).

If acceptAbsPath is TRUE a fileName starting with a separator ('/') will be returned without change. If acceptAbsPath is FALSE an absolute path will be appended to the directory path.

See also
absFilePath(), isRelative(), canonicalPath()

§ filter()

QDir::FilterSpec QDir::filter ( ) const
inline

Returns the value set by setFilter()

§ home()

QDir QDir::home ( )
static

Returns the home directory.

See also
homeDirPath()

§ homeDirPath()

QString QDir::homeDirPath ( )
static

Returns the absolute path for the user's home directory,

See also
home()

§ isRelative()

bool QDir::isRelative ( ) const
virtual

Returns TRUE if the directory path is relative to the current directory, FALSE if the path is absolute (e.g. under UNIX a path is relative if it does not start with a '/').

According to Einstein this function should always return TRUE.

See also
convertToAbs()

§ match() [1/2]

bool QDir::match ( const QStringList filters,
const QString fileName 
)
static

Returns TRUE if the fileName matches one of the wildcards in the list filters.

See also
QRegExp

§ match() [2/2]

bool QDir::match ( const QString filter,
const QString fileName 
)
static

Returns TRUE if the fileName matches the wildcard filter. Filter may also contain multiple wildcards separated by spaces or semicolons.

See also
QRegExp

§ matchAllDirs()

bool QDir::matchAllDirs ( ) const
inline

Returns the value set by setMatchAllDirs()

See also
setMatchAllDirs()

§ nameFilter()

QString QDir::nameFilter ( ) const
inline

Returns the string set by setNameFilter()

§ operator!=()

bool QDir::operator!= ( const QDir d) const
inlinevirtual

Returns TRUE if the d and this dir have different path or different sort/filter settings, otherwise FALSE.

§ operator=() [1/2]

QDir & QDir::operator= ( const QDir d)

Makes a copy of d and assigns it to this QDir.

§ operator=() [2/2]

QDir & QDir::operator= ( const QString path)

Sets the directory path to be the given path.

§ operator==()

bool QDir::operator== ( const QDir d) const
virtual

Returns TRUE if the d and this dir have the same path and all sort and filter settings are equal, otherwise FALSE.

§ operator[]()

QString QDir::operator[] ( int  index) const

Returns the file name at position index in the list of found file names. Equivalent to entryList().at(index).

Returns null if the index is out of range or if the entryList() function failed.

See also
count(), entryList()

§ path()

QString QDir::path ( ) const
inlinevirtual

Returns the path, this may contain symbolic links, but never contains redundant ".", ".." or multiple separators.

The returned path can be either absolute or relative (see setPath()).

See also
setPath(), absPath(), exists(), cleanDirPath(), dirName(), absFilePath(), convertSeparators()

§ remove()

bool QDir::remove ( const QString fileName,
bool  acceptAbsPath = TRUE 
)
virtual

Removes a file.

If acceptAbsPath is TRUE a path starting with a separator ('/') will remove the file with the absolute path, if acceptAbsPath is FALSE any number of separators at the beginning of fileName will be removed.

Returns TRUE if successful, otherwise FALSE.

§ root()

QDir QDir::root ( )
static

Returns the root directory.

See also
rootDirPath() drives()

§ separator()

char QDir::separator ( )
static

Returns the native directory separator; '/' under UNIX and '\' under MS-DOS, Windows NT and OS/2.

You do not need to use this function to build file paths. If you always use '/', Qt will translate your paths to conform to the underlying operating system.

§ setFilter()

void QDir::setFilter ( int  filterSpec)
virtual

Sets the filter used by entryList() and entryInfoList(). The filter is used to specify the kind of files that should be returned by entryList() and entryInfoList().

See also
filter(), setNameFilter()

§ setMatchAllDirs()

void QDir::setMatchAllDirs ( bool  enable)
virtual

If enable is TRUE, all directories will be listed (even if they do not match the filter or the name filter), otherwise only matched directories will be listed.

Bug:
Currently, directories that do not match the filter will not be included (the name filter will be ignored as expected).
See also
matchAllDirs()

§ setNameFilter()

void QDir::setNameFilter ( const QString nameFilter)
virtual

Sets the name filter used by entryList() and entryInfoList().

The name filter is a wildcarding filter that understands "*" and "?" wildcards, You may specify several filter entries separated by a " " or a ";". If you want entryList() and entryInfoList() to list all files ending with ".cpp" and all files ending with ".h", you simply call dir.setNameFilter("*.cpp *.h") or dir.setNameFilter("*.cpp;*.h")

See also
nameFilter(), setFilter()

§ setPath()

void QDir::setPath ( const QString path)
virtual

Sets the path of the directory. The path is cleaned of redundant ".", ".." and multiple separators. No check is made to ensure that a directory with this path exists.

The path can be either absolute or relative. Absolute paths begin with the directory separator ('/') or a drive specification (not applicable to UNIX). Relative file names begin with a directory name or a file name and specify a path relative to the current directory. An example of an absolute path is the string "/tmp/quartz", a relative path might look like "src/fatlib". You can use the function isRelative() to check if a QDir is using a relative or an absolute file path. You can call the function convertToAbs() to convert a relative QDir to an absolute one.

See also
path(), absPath(), exists(), cleanDirPath(), dirName(), absFilePath(), isRelative(), convertToAbs()

§ setSorting()

void QDir::setSorting ( int  sortSpec)
virtual

Sets the sorting order used by entryList() and entryInfoList().

The sortSpec is specified by or-ing values from the enum SortSpec. The different values are:

One of these:

Name
Sort by name (alphabetical order).
Time
Sort by time (most recent first).
Size
Sort by size (largest first).
Unsorted

Use the operating system order (UNIX does NOT sort alphabetically).

ORed with zero or more of these:

DirsFirst
Always put directory names first.
Reversed
Reverse sort order.
IgnoreCase
Ignore case when sorting by name.

§ sorting()

QDir::SortSpec QDir::sorting ( ) const
inline

Returns the value set by setSorting()

See also
setSorting()

The documentation for this class was generated from the following files: