I'm using this in my own app, I thought it might be handy to some of you
you could get a list of all files in a directory and its subdirectories, and you could also apply search pattern(s) when doing the same thing. The documentation comments should be descriptive enough
using System.Collections;
using System.IO;
Code:#region GetFiles (string Path) /// <summary> /// Gets all the files in the given folder path and all its subdirectories /// </summary> public static string[] GetFiles (string path) { ArrayList files = new ArrayList(); getFiles (path, ref files); return (string[])files.ToArray(typeof(string)); } private static void getFiles (string path, ref ArrayList files) { try { string[] folders = Directory.GetDirectories (path); for (int i=0;i<folders.Length;i++) getFiles (folders[i], ref files); string[] curFiles = Directory.GetFiles (path); files.AddRange (curFiles); } catch {} } #endregion #region GetFiles (string path, string[] searchPatterns, bool includeSubFolders) +1 overload /// <summary> /// Gets all the files in the given folder path and all its subdirectories. /// </summary> /// <param name="searchPatterns">search patterns (ie, "*.exe")</param> public static string[] GetFiles(string path, string[] searchPatterns, bool includeSubFolders) { ArrayList files = new ArrayList(); if (includeSubFolders) { getFiles (path, searchPatterns, ref files); } else { try { for (int i=0; i<searchPatterns.Length; i++) { string[] curFiles = Directory.GetFiles (path, searchPatterns[i]); files.AddRange (curFiles); } } catch {} } return (string[])files.ToArray(typeof(string)); } /// <summary> /// Gets all the files in the given folder path and all its subdirectories. /// </summary> /// <param name="searchPattern">A series of valid search patterns, separated /// by ";". For example "*.jpg;prog*.exe"</param> public static string[] GetFiles(string path, string searchPattern, bool includeSubFolders) { string[] patterns = searchPattern.Split (';'); return GetFiles (path, patterns, includeSubFolders); } private static void getFiles (string path, string[] searchPattern, ref ArrayList files) { // Try to get the current directory's folders try { string[] folders = Directory.GetDirectories (path); for (int i=0;i<folders.Length;i++) getFiles (folders[i], searchPattern, ref files); for (int i=0; i<searchPattern.Length; i++) { string[] curFiles = Directory.GetFiles (path, searchPattern[i]); files.AddRange (curFiles); } } catch {} } #endregion
![]()




Reply With Quote