Click here to Skip to main content
15,879,239 members
Articles / Desktop Programming / MFC
Article

SADirRead - directory and file list class

Rate me:
Please Sign up or sign in to vote.
4.88/5 (27 votes)
2 Mar 2003CPOL 284.1K   3.6K   80   86
Scans a folder for sub-folders and files. Simple and easy to use.

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)


Written By
Software Developer
United States United States
Chris Losinger was the president of Smaller Animals Software, Inc. (which no longer exists).

Comments and Discussions

 
GeneralRe: files longer than 179 Pin
Hector T26-Nov-02 2:01
Hector T26-Nov-02 2:01 
GeneralRe: files longer than 179 Pin
funvill11-May-05 8:29
funvill11-May-05 8:29 
GeneralUnhandled exception ...access violation Pin
jimNLX18-Sep-02 9:07
jimNLX18-Sep-02 9:07 
GeneralRe: Unhandled exception ...access violation Pin
Chris Losinger18-Sep-02 9:09
professionalChris Losinger18-Sep-02 9:09 
GeneralRe: Unhandled exception ...access violation Pin
jimNLX18-Sep-02 9:39
jimNLX18-Sep-02 9:39 
GeneralRe: Unhandled exception ...access violation Pin
Chris Losinger18-Sep-02 10:13
professionalChris Losinger18-Sep-02 10:13 
GeneralSmall problem with find() Pin
Paresh Solanki11-Mar-02 0:16
Paresh Solanki11-Mar-02 0:16 
GeneralRe: Small problem with find() Pin
Chris Losinger11-Mar-02 1:49
professionalChris Losinger11-Mar-02 1:49 
i don't remember why it was removed. but, i know it compiled fine for me without it (or i wouldn't have posted the code). but, it's probably fine to leave it in.

-c



Smaller Animals Software, Inc.
You're the icing - on the cake - on the table - at my wake. Modest Mouse

GeneralRe: Small problem with find() Pin
Paresh Solanki11-Mar-02 2:02
Paresh Solanki11-Mar-02 2:02 
General"Look In" Combo Box Pin
George Clarence23-Jan-02 19:10
George Clarence23-Jan-02 19:10 
GeneralRe: "Look In" Combo Box Pin
Chris Losinger23-Jan-02 19:34
professionalChris Losinger23-Jan-02 19:34 
GeneralRe: "Look In" Combo Box Pin
George Clarence24-Jan-02 2:38
George Clarence24-Jan-02 2:38 
GeneralRe: "Look In" Combo Box Pin
Chris Losinger11-Mar-02 1:48
professionalChris Losinger11-Mar-02 1:48 
QuestionWhat changes were made... Pin
Jason Troitsky (was Hattingh)20-Jan-02 5:34
Jason Troitsky (was Hattingh)20-Jan-02 5:34 
AnswerRe: What changes were made... Pin
Chris Losinger20-Jan-02 5:34
professionalChris Losinger20-Jan-02 5:34 
GeneralCToolBarCtrl Help!! Pin
19-Jan-02 5:05
suss19-Jan-02 5:05 
GeneralRe: CToolBarCtrl Help!! Pin
19-Jan-02 6:21
suss19-Jan-02 6:21 
GeneralGet File Date Pin
Picasso18-Jan-02 5:57
Picasso18-Jan-02 5:57 
GeneralRe: Get File Date Pin
Chris Losinger18-Jan-02 5:58
professionalChris Losinger18-Jan-02 5:58 
GeneralRe: Get File Date Pin
Picasso19-Jan-02 4:33
Picasso19-Jan-02 4:33 
GeneralRe: Get File Date Pin
Chris Losinger19-Jan-02 4:37
professionalChris Losinger19-Jan-02 4:37 
GeneralOoops. don't download yet - not updated Pin
Chris Losinger19-Jan-02 4:39
professionalChris Losinger19-Jan-02 4:39 
Generalsort by date takes too long Pin
mike dilworth27-Nov-01 21:22
mike dilworth27-Nov-01 21:22 
GeneralRe: sort by date takes too long Pin
Chris Losinger28-Nov-01 1:53
professionalChris Losinger28-Nov-01 1:53 
GeneralRe: sort by date takes too long Pin
mike dilworth28-Nov-01 2:04
mike dilworth28-Nov-01 2:04 

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

Use Ctrl+Left/Right to switch messages, Ctrl+Up/Down to switch threads, Ctrl+Shift+Left/Right to switch pages.