Click here to Skip to main content
Licence CPOL
First Posted 23 Jan 2001
Views 212,602
Downloads 2,861
Bookmarked 74 times

SADirRead - directory and file list class

By | 2 Mar 2003 | Article
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)

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

 
You must Sign In to use this message board. (secure sign-in)
 
Search this forum  
 FAQ
    Noise  Layout  Per page   
  Refresh
GeneralExcellant Job PinmemberCharlie Curtis11:03 29 Oct '08  
GeneralRe: Excellant Job PinmemberChris Losinger11:29 29 Oct '08  
GeneralRe: Excellant Job PinmemberCharlie Curtis11:37 29 Oct '08  
QuestionCan I have a C# version of this application over .NET 2.0 Pinmembernitinr7080:31 22 Aug '07  

hey Chris,
 
I need to use your classes with my USB Automatic File Syncing Application (with a remote host).
I am having difficulties in reading the source directory in the USB drive with those functions provided along with a FTP client library I am using as FTPWebRequest object need path starting with "/" which is a norm for specifying source directory in FTPs.
 
I really feel your application can help me...so that I can monitor my USB drive contents and populate the Lists with file and directory names in it.
 
And later on I just need to set the Upload filenames to Upload my files on the server.
 
I am working on C#.NET so can you provide me the source of your application in C# or any significant guidance would be highly appreciable.
 
NITIN
 


QuestionBuggy Code? PinmemberEScout2094:37 1 Feb '07  
AnswerRe: Buggy Code? PinmemberChris Losinger4:48 1 Feb '07  
GeneralRe: Buggy Code? PinmemberEScout2095:28 1 Feb '07  
GeneralRe: Buggy Code? PinmemberChris Losinger6:17 1 Feb '07  
Generalworkin with simple Win32 app PinmemberMATRIX-2:41 11 Jan '07  
GeneralRe: workin with simple Win32 app PinmemberChris Losinger2:50 11 Jan '07  
GeneralRe: workin with simple Win32 app PinmemberMATRIX-2:03 12 Jan '07  
Questionerror LNK2001: unresolved external symbol PinmemberMukund - - Kumar1:58 25 May '06  
AnswerRe: error LNK2001: unresolved external symbol PinmemberChris Losinger2:23 25 May '06  
GeneralRe: error LNK2001: unresolved external symbol PinmemberMukund - - Kumar2:29 25 May '06  
GeneralRe: error LNK2001: unresolved external symbol PinmemberChris Losinger2:34 25 May '06  
Questionunicode file name and directory name? Pinmemberdungbkhn22:42 20 May '06  
Generalformat file size PinmemberRoger653:35 8 Mar '06  
GeneralReturn relative path Pinmemberovolok0:06 6 Apr '04  
GeneralRe: Return relative path PinmemberChris Losinger2:10 6 Apr '04  
Generalproblems with integrating Pinmembercryptic_silences18:22 5 Apr '04  
GeneralRe: problems with integrating Pinmembercryptic_silences20:08 5 Apr '04  
GeneralRe: problems with integrating Pinmemberbart1321:13 20 Jan '06  
GeneralNewbie: How to integrate Class Pinmembercaribuni5:28 15 Jan '04  
GeneralRe: Newbie: How to integrate Class PinmemberChris Losinger6:10 15 Jan '04  
GeneralRe: Newbie: How to integrate Class Pinmembercaribuni6:30 15 Jan '04  

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

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

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