Click here to Skip to main content
Click here to Skip to main content

SADirRead - directory and file list class

By , 2 Mar 2003
 

Introduction

CSADirRead is a class that will generate a list of files and folders contained in a folder of your choice.

Usage

First, declare a CSADirRead object

#include "SADirRead.h"

...

CSADirRead dr;

First, we build our list of folders to scan.

dr.ClearDirs();         // start clean
dr.GetDirs("c:\\temp", true); // get all folders under c:\temp

// dump the directory list to the debug trace window:

// get the dir array
CSADirRead::SADirVector &dirs = dr.Dirs();

// loop over it
for (CSADirRead::SADirVector::iterator dit = dirs.begin(); 
     dit!=dirs.end(); dit++)
{
    TRACE("%s\n", (*dit).m_sName);
}

Now that the object knows which directories to scan, tell it to scan for files:

dr.ClearFiles();        // start clean

dr.GetFiles("*.jpg");   // get all *.JPG files in c:\temp and below

// get the file array
CSADirRead::SAFileVector &files = dr.Files();   

// dump it...
for (CSADirRead::SAFileVector::iterator fit = files.begin(); 
     fit!=files.end(); fit++)
{
    TRACE("%s\n", (*fit).m_sName);
}

Because you can access and modify the folder list before scanning for files, you can manually add folders to (or remove folders from) the folder list. Likewise, you can call GetDirs() multiple times to build up the folder list before scanning for files, like this:

dr.ClearDirs();                   // start clean
dr.GetDirs("c:\\temp", true);     // get all folders under c:\temp, recursively
dr.GetDirs("c:\\windows", false); // look in c:\windows. but don't recurse 
                                  // to sub-folders

dr.ClearFiles();
dr.GetFiles("*.JPG"); // gets files from all of the above folders

Sorting the results

After building the file list, you can sort the files using CSADirRead::SortFiles. CSADirRead has three built-in sorting methods - alphabetic, date and size - and can sort in ascending or descending order.

Get a list of subfolders in c:\windows

CSADirRead dr;
dr.GetDirs("c:\\windows", false);
dr.GetFiles("*.*", false, true);
 
// get the file array
CSADirRead::SAFileVector &files = dr.Files();   

Now, files will have a list of subfolder of C:\Windows (no files included, just the folders)

History

  • 20 Jan 2002 - updated download
  • 24 May 2002 - updated download
  • 3 March 2003 - new revision.

License

This article, along with any associated source code and files, is licensed under The Code Project Open License (CPOL)

About the Author

Chris Losinger
Software Developer
United States United States
Member
Chris Losinger is the president of Smaller Animals Software, Inc..

Sign Up to vote   Poor Excellent
Add a reason or comment to your vote: x
Votes of 3 or less require a comment

Comments and Discussions

 
Hint: For improved responsiveness ensure Javascript is enabled and choose 'Normal' from the Layout dropdown and hit 'Update'.
You must Sign In to use this message board.
Search this forum  
    Spacing  Noise  Layout  Per page   
GeneralRe: workin with simple Win32 appmemberMATRIX-12 Jan '07 - 2:03 
Questionerror LNK2001: unresolved external symbolmemberMukund - - Kumar25 May '06 - 1:58 
AnswerRe: error LNK2001: unresolved external symbolmemberChris Losinger25 May '06 - 2:23 
GeneralRe: error LNK2001: unresolved external symbolmemberMukund - - Kumar25 May '06 - 2:29 
GeneralRe: error LNK2001: unresolved external symbolmemberChris Losinger25 May '06 - 2:34 
Questionunicode file name and directory name?memberdungbkhn20 May '06 - 22:42 
Generalformat file sizememberRoger658 Mar '06 - 3:35 
GeneralReturn relative pathmemberovolok6 Apr '04 - 0:06 
GeneralRe: Return relative pathmemberChris Losinger6 Apr '04 - 2:10 
Generalproblems with integratingmembercryptic_silences5 Apr '04 - 18:22 
GeneralRe: problems with integratingmembercryptic_silences5 Apr '04 - 20:08 
GeneralRe: problems with integratingmemberbart13220 Jan '06 - 1:13 
GeneralNewbie: How to integrate Classmembercaribuni15 Jan '04 - 5:28 
GeneralRe: Newbie: How to integrate ClassmemberChris Losinger15 Jan '04 - 6:10 
GeneralRe: Newbie: How to integrate Classmembercaribuni15 Jan '04 - 6:30 
GeneralRe: Newbie: How to integrate Classmembercaribuni15 Jan '04 - 6:39 
GeneralRe: Newbie: How to integrate ClassmemberChris Losinger15 Jan '04 - 7:48 
GeneralRe: Newbie: How to integrate Classmembercaribuni15 Jan '04 - 8:14 
GeneralRe: Newbie: How to integrate ClassmemberChris Losinger15 Jan '04 - 8:42 
GeneralRe: Newbie: How to integrate Classmembercaribuni15 Jan '04 - 9:03 
GeneralHelp with accessing foldermembervgandhi13 Jun '03 - 8:35 
GeneralFile dates are offmemberAkolade7 May '03 - 8:05 
QuestionHow-TO work with directory?memberHuaHsin4 May '03 - 19:30 
AnswerRe: How-TO work with directory?memberChris Losinger5 May '03 - 1:23 
Generalfile name from file handle !memberbfadi24 Feb '03 - 7:42 
Questionhow to get path to my own executable?memberJesse Evans4 Feb '03 - 11:34 
AnswerRe: how to get path to my own executable?memberChris Losinger4 Feb '03 - 13:47 
GeneralRe: how to get path to my own executable?memberJesse Evans5 Feb '03 - 7:00 
Generalfiles longer than 179memberHector T26 Nov '02 - 1:18 
GeneralRe: files longer than 179memberHector T26 Nov '02 - 2:01 
GeneralRe: files longer than 179memberfunvill11 May '05 - 8:29 
GeneralUnhandled exception ...access violationmemberjimNLX18 Sep '02 - 9:07 
GeneralRe: Unhandled exception ...access violationmemberChris Losinger18 Sep '02 - 9:09 
GeneralRe: Unhandled exception ...access violationmemberjimNLX18 Sep '02 - 9:39 
GeneralRe: Unhandled exception ...access violationmemberChris Losinger18 Sep '02 - 10:13 
GeneralSmall problem with find()memberParesh Solanki11 Mar '02 - 0:16 
GeneralRe: Small problem with find()memberChris Losinger11 Mar '02 - 1:49 
GeneralRe: Small problem with find()memberParesh Solanki11 Mar '02 - 2:02 
General"Look In" Combo BoxmemberGeorge Clarence23 Jan '02 - 19:10 
GeneralRe: "Look In" Combo BoxmemberChris Losinger23 Jan '02 - 19:34 
GeneralRe: "Look In" Combo BoxmemberGeorge Clarence24 Jan '02 - 2:38 
GeneralRe: "Look In" Combo BoxmemberChris Losinger11 Mar '02 - 1:48 
QuestionWhat changes were made...memberJ.G. Hattingh20 Jan '02 - 5:34 
AnswerRe: What changes were made...memberChris Losinger20 Jan '02 - 5:34 
GeneralCToolBarCtrl Help!!memberSilky Octopus19 Jan '02 - 5:05 
GeneralRe: CToolBarCtrl Help!!memberSilky Octopus19 Jan '02 - 6:21 
GeneralGet File DatememberPicasso18 Jan '02 - 5:57 
GeneralRe: Get File DatememberChris Losinger18 Jan '02 - 5:58 
GeneralRe: Get File DatememberPicasso19 Jan '02 - 4:33 
GeneralRe: Get File DatememberChris Losinger19 Jan '02 - 4:37 

General General    News News    Suggestion Suggestion    Question Question    Bug Bug    Answer Answer    Joke Joke    Rant Rant    Admin Admin   

Permalink | Advertise | Privacy | Mobile
Web04 | 2.6.130516.1 | Last Updated 2 Mar 2003
Article Copyright 2001 by Chris Losinger
Everything else Copyright © CodeProject, 1999-2013
Terms of Use
Layout: fixed | fluid