Gray C++ Libraries  0.0.2
A set of C++ libraries for MSVC, GNU on Windows, WinCE, Linux
Gray::cFileDir Class Reference

#include <cFileDir.h>

Public Member Functions

 cFileDir (cStringF sDirPath="")
 
virtual ~cFileDir ()
 
cStringF get_DirPath () const
 
void put_DirPath (cStringF sDirPath)
 
ITERATE_t get_FileCount () const
 
const cFileFindEntryGetEnumFile (ITERATE_t i) const
 
cFileFindEntryGetEnumFile (ITERATE_t i)
 
cStringF GetEnumTitleX (ITERATE_t i) const
 
cStringF GetEnumPath (ITERATE_t i) const
 
cStringF GetFilePath (const FILECHAR_t *pszTitle) const
 
void RemoveAll ()
 
HRESULT ReadDir (const FILECHAR_t *pszDirPath=nullptr, const FILECHAR_t *pszWildcardFile=nullptr, ITERATE_t iFilesMax=k_FilesMax, bool bFollowLink=false)
 
HRESULT ReadDirAnyExt (const FILECHAR_t *pszFilePath, ITERATE_t iFilesMax=k_FilesMax)
 
HRESULT ReadDirPreferredExt (const FILECHAR_t *pszFilePath, const FILECHAR_t *const *pszExtTable)
 

Static Public Member Functions

static HRESULT __stdcall RemoveDirectory1 (const FILECHAR_t *pszDirName)
 
static HRESULT __stdcall CreateDirectory1 (const FILECHAR_t *pszDirName)
 
static HRESULT __stdcall CreateDirectoryX (const FILECHAR_t *pszDirName)
 
static HRESULT __stdcall CreateDirForFileX (const FILECHAR_t *pszFilePath)
 
static HRESULT __stdcall MovePathToTrash (const FILECHAR_t *pszPath, bool bDir)
 
static HRESULT __stdcall DirFileOp (FILEOP_TYPE eOp, const FILECHAR_t *pszDirSrc, const FILECHAR_t *pszDirDest, DWORD nFileFlags, cLogProcessor *pLog, IStreamProgressCallback *pProgress)
 
static HRESULT __stdcall MoveDirFiles (const FILECHAR_t *pszDirSrc, const FILECHAR_t *pszDirDest, cLogProcessor *pLog=nullptr, IStreamProgressCallback *pProgress=nullptr)
 
static HRESULT __stdcall CopyDirFiles (const FILECHAR_t *pszDirSrc, const FILECHAR_t *pszDirDest, cLogProcessor *pLog=nullptr, IStreamProgressCallback *pProgress=nullptr)
 
static HRESULT __stdcall DeleteDirFiles (const FILECHAR_t *pszDirName, const FILECHAR_t *pszWildcardFile=nullptr, DWORD nFileFlags=0)
 
static HRESULT __stdcall DeletePathX (const FILECHAR_t *pszPath, DWORD nFileFlags=0)
 

Public Attributes

cArrayStruct< cFileFindEntrym_aFiles
 Array of the files we found matching the ReadDir criteria. More...
 

Static Public Attributes

static const int k_FilesMax = 64 * 1024
 
static const LOGCHAR_t k_szCantMoveFile [] = "Can't Move File "
 if MoveDirFiles failed for this. More...
 

Protected Member Functions

virtual HRESULT AddFileDirEntry (cFileFindEntry &FileEntry)
 

Protected Attributes

cStringF m_sDirPath
 Does NOT include the wild card. More...
 

Friends

class cFileDirTests
 

Detailed Description

A file folder or directory. read/cached as a single action. Stores a list of the files as a single action.

Note
i CAN delete files without harming the list. (unlike cFileFind)

Constructor & Destructor Documentation

◆ cFileDir()

Gray::cFileDir::cFileDir ( cStringF  sDirPath = "")
inlineexplicit

◆ ~cFileDir()

virtual Gray::cFileDir::~cFileDir ( )
inlinevirtual

Member Function Documentation

◆ AddFileDirEntry()

virtual HRESULT Gray::cFileDir::AddFileDirEntry ( cFileFindEntry FileEntry)
inlineprotectedvirtual

Just add the file to a list. Overload this to do extra filtering.

◆ CopyDirFiles()

static HRESULT __stdcall Gray::cFileDir::CopyDirFiles ( const FILECHAR_t pszDirSrc,
const FILECHAR_t pszDirDest,
cLogProcessor pLog = nullptr,
IStreamProgressCallback pProgress = nullptr 
)
inlinestatic

Copy this directory and all its files.

◆ CreateDirectory1()

HRESULT GRAYCALL Gray::cFileDir::CreateDirectory1 ( const FILECHAR_t pszDirName)
static

HRESULT_WIN32_C(ERROR_ALREADY_EXISTS) is OK ? use CreateDirectory1 name because might be "#define CreateDirectory CreateDirectoryA" in _WIN32 Does NOT create missing parent folders.

◆ CreateDirectoryX()

HRESULT GRAYCALL Gray::cFileDir::CreateDirectoryX ( const FILECHAR_t pszDirName)
static

This is like CreateDirectory1() except will create intermediate/parent directories if needed.

Note
like SHCreateDirectoryExA() but we can't always use since thats only for Win2K+
Returns
S_FALSE = already exists. equiv to ERROR_ALREADY_EXISTS. NOT a real error.

◆ CreateDirForFileX()

HRESULT GRAYCALL Gray::cFileDir::CreateDirForFileX ( const FILECHAR_t pszFilePath)
static

CreateDirectoryX() for a file. will create intermediate/parent directories if needed.

◆ DeleteDirFiles()

static HRESULT __stdcall Gray::cFileDir::DeleteDirFiles ( const FILECHAR_t pszDirName,
const FILECHAR_t pszWildcardFile = nullptr,
DWORD  nFileFlags = 0 
)
inlinestatic

Delete this directory AND all its files. similar to cFileDirDlg::DeleteDirFiles( FOF_NOCONFIRMATION | FOF_SILENT | FOF_NOERRORUI ) e.g. cFileDir::DeleteDirFiles( pszDirPath ); = delete directory and all its sub stuff. e.g. cFileDir::DeleteDirFiles( pszDirPath, "*.h" ); = delete contents of directory and all its wild carded children. leaves directory.

◆ DeletePathX()

HRESULT GRAYCALL Gray::cFileDir::DeletePathX ( const FILECHAR_t pszPath,
DWORD  nFileFlags = 0 
)
static

Delete this file or directory. If it's a directory then delete recursively. No wildcards.

◆ DirFileOp()

HRESULT GRAYCALL Gray::cFileDir::DirFileOp ( FILEOP_TYPE  eOp,
const FILECHAR_t pszDirSrc,
const FILECHAR_t pszDirDest,
DWORD  nFileFlags,
cLogProcessor pLog,
IStreamProgressCallback pProgress 
)
static

Copy, Delete or Move a directory AND all files in the directory (pszDirSrc) to pszDirDest. with recursive descent.

  • pszDirSrc = full path.
  • nFileFlags = FOF_ALLOWUNDO, FOF_FILESONLY, FOF_RENAMEONCOLLISION, FILEOP_FLAGS
    Returns
    <0 or S_OK = nothing to do. Number of files moved/deleted.

◆ get_DirPath()

cStringF Gray::cFileDir::get_DirPath ( ) const
inline

◆ get_FileCount()

ITERATE_t Gray::cFileDir::get_FileCount ( ) const
inline

◆ GetEnumFile() [1/2]

cFileFindEntry& Gray::cFileDir::GetEnumFile ( ITERATE_t  i)
inline

◆ GetEnumFile() [2/2]

const cFileFindEntry& Gray::cFileDir::GetEnumFile ( ITERATE_t  i) const
inline

◆ GetEnumPath()

cStringF Gray::cFileDir::GetEnumPath ( ITERATE_t  i) const
inline

Get the full path for the file i.

◆ GetEnumTitleX()

cStringF Gray::cFileDir::GetEnumTitleX ( ITERATE_t  i) const
inline

Get the file title + ext.

◆ GetFilePath()

cStringF Gray::cFileDir::GetFilePath ( const FILECHAR_t pszTitle) const
inline
Returns
full path.

◆ MoveDirFiles()

static HRESULT __stdcall Gray::cFileDir::MoveDirFiles ( const FILECHAR_t pszDirSrc,
const FILECHAR_t pszDirDest,
cLogProcessor pLog = nullptr,
IStreamProgressCallback pProgress = nullptr 
)
inlinestatic

Move this directory and all its files.

◆ MovePathToTrash()

HRESULT GRAYCALL Gray::cFileDir::MovePathToTrash ( const FILECHAR_t pszPath,
bool  bDir 
)
static

Move file/directory to the trash bin/folder. For use with FOF_ALLOWUNDO and FILEOP_DELETE like WIN32 SHFileOperation(FOF_ALLOWUNDO);

◆ put_DirPath()

void Gray::cFileDir::put_DirPath ( cStringF  sDirPath)
inline

◆ ReadDir()

HRESULT Gray::cFileDir::ReadDir ( const FILECHAR_t pszDirPath = nullptr,
const FILECHAR_t pszWildcardFile = nullptr,
ITERATE_t  iFilesMax = k_FilesMax,
bool  bFollowLink = false 
)

calls the virtual AddFileDirEntry()

  • pszDirPath = the base directory. nullptr = current dir. pszWildcardFile = may use a filter like: *.scp. may contain full path if pszDirPath is empty. nullptr = all.
    Note
    It seems _WIN32 does NOT like the trailing "\" alone e.g. "d:\menace\scripts\" is bad ! use "d:\menace\scripts\*.*"
    Returns
    <0 = error. number of files.

◆ ReadDirAnyExt()

HRESULT Gray::cFileDir::ReadDirAnyExt ( const FILECHAR_t pszFilePath,
ITERATE_t  iFilesMax = k_FilesMax 
)

Find this file name but with any extension.

Returns
# files found with this file title.

◆ ReadDirPreferredExt()

HRESULT Gray::cFileDir::ReadDirPreferredExt ( const FILECHAR_t pszFilePath,
const FILECHAR_t *const *  pszExtTable 
)

Find just a single file with the preferred extension from a list. Ignore any existing extension

◆ RemoveAll()

void Gray::cFileDir::RemoveAll ( )
inline

Dispose of my data.

◆ RemoveDirectory1()

HRESULT GRAYCALL Gray::cFileDir::RemoveDirectory1 ( const FILECHAR_t pszDirName)
static
Note
will fail if directory is not empty. use RemoveDirectory1 name because might be "#define RemoveDirectory RemoveDirectoryA" in _WIN32

Friends And Related Function Documentation

◆ cFileDirTests

friend class cFileDirTests
friend

Member Data Documentation

◆ k_FilesMax

const int Gray::cFileDir::k_FilesMax = 64 * 1024
static

◆ k_szCantMoveFile

const LOGCHAR_t Gray::cFileDir::k_szCantMoveFile = "Can't Move File "
static

if MoveDirFiles failed for this.

MoveDirFiles failed for this.

◆ m_aFiles

cArrayStruct<cFileFindEntry> Gray::cFileDir::m_aFiles

Array of the files we found matching the ReadDir criteria.

◆ m_sDirPath

cStringF Gray::cFileDir::m_sDirPath
protected

Does NOT include the wild card.


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