This section of the archives stores flipcode's complete Developer Toolbox collection, featuring a variety of mini-articles and source code contributions from our readers.

 

  File Enumerator
  Submitted by



The following code lists all the files in a directory, and allows you to set a callback for each new file or directory that is found. The _directory_ parameter should be provided with a directory name plus wildcard (i.e. "/stuff/*.*"). Set recurse to true if you want to search subdirectories.

Sam McGrath
sammy@dnai.com


Download Associated File: fenumerate.cpp (965 bytes)

//Editor's note:  
//COTD Entry:  File Enumerator by Sam McGrath [sammy@dnai.com]


void System_Dir(const char *directory, bool recurse, void(*dirCallback)(const char *dir), void(*fileCallback)(const char *filename)) { WIN32_FIND_DATA finddata; HANDLE handle;

handle = FindFirstFile(directory, &finddata);

if (handle == INVALID_HANDLE_VALUE) return;

do { if (!(finddata.dwFileAttributes & FILE_ATTRIBUTE_HIDDEN) && !(finddata.dwFileAttributes & FILE_ATTRIBUTE_SYSTEM) && !(finddata.dwFileAttributes & FILE_ATTRIBUTE_TEMPORARY)) { if (finddata.dwFileAttributes & FILE_ATTRIBUTE_DIRECTORY) { if (strcmp(finddata.cFileName, ".") && strcmp(finddata.cFileName, "..")) if (dirCallback) dirCallback(finddata.cFileName); } else { if (fileCallback) fileCallback(finddata.cFileName); } } } while (FindNextFile(handle, &finddata));

FindClose(handle); }

The zip file viewer built into the Developer Toolbox made use of the zlib library, as well as the zlibdll source additions.

 

Copyright 1999-2008 (C) FLIPCODE.COM and/or the original content author(s). All rights reserved.
Please read our Terms, Conditions, and Privacy information.