Directory Walker
/*
Cafechess Library: Cover basic chess programming needs, like GUI, Engine integration,
FEN and PGN parsing.
\\|//
(o o)
--------------ooO-(_)-Ooo----------------------------------
Copyright (C) 2009 By Gregory A. Prentice Snoqualmie, WA
www.cafechess.org
[email protected]
Oooo
--------------oooO----( )---------------------------------
( ) (_/
\_)
Microsoft Public License (Ms-PL)
Revisions:
Author Date Description:
*/
using System;
using System.IO;
namespace Cafechess.IO
{
public class DirectoryWalker
{
string coDirectoryName;
string coDirectoryPattern;
string coFilePattern;
bool coRecursive;
bool coFinished;
bool coCancel;
public delegate void FoundFile ( string fileName ) ;
public event FoundFile FoundFileEvent;
public delegate void FoundDirectory ( string directoryName ) ;
public event FoundDirectory FoundDirectoryEvent;
public delegate void FinishedSearch () ;
public event FinishedSearch FinishedSearchEvent;
public string DirectoryName
{
get { return coDirectoryName; }
set { coDirectoryName = value; }
}
public string DirectoryPattern
{
get { return coDirectoryPattern; }
set { coDirectoryPattern = value; }
}
public string FilePattern
{
get { return coFilePattern; }
set { coFilePattern = value; }
}
public bool Recursive
{
get { return coRecursive; }
set { coRecursive = value; }
}
public bool Cancel
{
get { return coCancel; }
set { coCancel = value; }
}
public bool Finished
{
get { return coFinished; }
set { coFinished = value; }
}
public DirectoryWalker ()
{
DirectoryName = System.IO.Path.DirectorySeparatorChar.ToString () ;
DirectoryPattern = null ;
FilePattern = "*.*" ;
Recursive = false ;
Cancel = false ;
}
void Search ( string directoryName )
{
try
{
// Find files in the current directory.
SearchFiles ( directoryName ) ;
if ( Recursive && Cancel == false )
{
foreach ( string d in Directory.GetDirectories ( directoryName ))
{
if ( FoundDirectoryEvent != null )
FoundDirectoryEvent ( d ) ;
SearchFiles ( d ) ;
if ( Cancel == true )
break ;
Search ( d ) ;
}
}
}
catch ( System.Exception excpt )
{
Console.WriteLine ( excpt.Message ) ;
}
}
void SearchFiles ( string directoryName )
{
if ( Cancel == false )
{
foreach ( string f in Directory.GetFiles ( directoryName, FilePattern ))
{
if ( FoundFileEvent != null )
FoundFileEvent ( f ) ;
if ( Cancel == true )
break ;
}
}
}
public void Search ()
{
Finished = false ;
Search ( DirectoryName ) ;
Cancel = false ;
Finished = true ;
if ( FinishedSearchEvent != null )
FinishedSearchEvent () ;
}
public void Search ( string filename, bool recursive )
{
DirectoryName = System.IO.Path.GetDirectoryName ( filename ) ;
FilePattern = System.IO.Path.GetFileName ( filename ) ;
Search () ;
}
public void AddEvents ( IDirectoryWalkerEvents ie )
{
FoundFileEvent += new DirectoryWalker.FoundFile ( ie.FoundFile ) ;
FoundDirectoryEvent += new FoundDirectory ( ie.FoundDirectory ) ;
FinishedSearchEvent += new FinishedSearch ( ie.FinishedSearch ) ;
}
public void RemoveEvents ( IDirectoryWalkerEvents ie )
{
FoundFileEvent -= new DirectoryWalker.FoundFile ( ie.FoundFile ) ;
FoundDirectoryEvent -= new FoundDirectory ( ie.FoundDirectory ) ;
FinishedSearchEvent -= new FinishedSearch ( ie.FinishedSearch ) ;
}
public interface IDirectoryWalkerEvents
{
void FoundFile ( string filename ) ;
void FoundDirectory ( string directoryName ) ;
void FinishedSearch () ;
}
}
}
Related examples in the same category
1. Find Files That Match a Wildcard Expression 2. Get Files from a directory 3. Get Directory properties from DirectionInfo class 4. Get directory name and file information in that directory 5. Directory Counter 6. File Search 7. Get Name, Parent, Exists properties from DirectoryInfo class 8. Get Creation Time 9. Get Last Write Time 10. Get Last Access Time 11. Calculate Directory Size 12. Copy Directory 13. Check the Existance of a Directory 14. Get Current Directory 15. Set Current Directory 16. Traversing Directories 17. Directory Object 18. illustrates recursive Directory use 19. illustrates the Directory class 20. illustrates the Directory class 2 21. Uses the DirectoryInfo class to recursively show subdirectories 22. Changes the current working directory and then lists the files in the directory 23. Directory Tree Host 24. Gets the size of all files within a directory 25. Determine if the directory is empty, ie. no files and no sub-directories 26. Get an array of files info from a directory. 27. Removes a directory as best as it can. Errors are ignored. 28. Directory Class xxposes static methods for creating, moving, and enumerating through directories and subdirectories. 29. Calculates the size of a directory and its subdirectories, if any, and displays the total size in bytes. 30. Gets the current working directory of the application. 31. Directory Class 32. Calculate the size of a directory and its subdirectories, if any, and displays the total size in bytes. 33. Creates all directories and subdirectories in the specified path. 34. Create new nested directories 35. Deletes an empty directory from a specified path. 36. Deletes the directory any subdirectories and files in the directory. 37. Returns an enumerable collection of directory names in a specified path. 38. Returns an enumerable collection of directory names that match a search pattern in a specified path. 39. Get collection of directory names that match a search pattern, and optionally searches subdirectories. 40. Returns an enumerable collection of file names in a specified path. 41. Returns an enumerable collection of file names that match a search pattern in a specified path. 42. Get a collection of file names that match a search pattern, and optionally searches subdirectories. 43. Determines whether the given path refers to an existing directory on disk. 44. Gets a DirectorySecurity object that encapsulates the access control list (ACL) entries 45. Gets the creation date and time of a directory. 46. Gets the creation date and time, in Coordinated Universal Time (UTC) format, of a directory. 47. Gets the names of subdirectories in the specified directory. 48. Gets an array of directories matching the specified search pattern from the current directory. 49. Returns the volume information, root information, or both for the specified path. 50. Returns the names of files that match the specified search pattern 51. Returns the names of all files and subdirectories in the specified directory. 52. Returns the date and time the specified file or directory was last accessed. 53. Returns the date and time the specified file or directory was last written to. 54. Sets the date and time the specified file or directory was last accessed. 55. Sets the date and time a directory was last written to. 56. Instance methods for creating, moving, and enumerating through directories and subdirectories. 57. Copy directories with DirectoryInfo 58. DriveInfo Class Provides access to information on a drive. 59. Read and Write to a Newly Created Data File 60. Read Text from a File 61. File.OpenText returns a StreamReader 62. Write Text to a File 63. Copy,delete file and directory 64. Find all files in a directory, and all files within every nested directory. 65. Find all files in a directory, and all files within every nested directory. (2) 66. Current Dir 67. Create Directory 68. Class, which describes folder with its subfolders.