using System;using System.IO;namespace Jmouse... { public class JFiles ...{ public enum JSearchOptions ...{ AllDirectories, OnlyTopDirectory }; public enum JPatternOptions ...{ OnlyFiles, OnlyDirectories, Both }; protected virtual void SetDirMethod(string[] path) ...{ } protected virtual void SetFileMethod(string[] path) ...{ } protected virtual void SetErrorMethod(string path, Exception e) ...{ } protected virtual void SetErrorMethod(string path, string searchPattern, Exception e) ...{ } public int Search(string path) ...{ int SearchFailed = -1; try ...{ string[] dirs = Directory.GetDirectories(path); SetDirMethod(dirs); if (dirs.Length > 0) ...{ for (int i = 0; i < dirs.Length; i++) ...{ try ...{ SearchFailed += Search(dirs[i]); } catch (Exception e) ...{ SearchFailed++; SetErrorMethod(path, e); continue; } } } string[] files = Directory.GetFiles(path); SetFileMethod(files); return (SearchFailed + 1); } catch (Exception e) ...{ SetErrorMethod(path, e); } return SearchFailed; } public int Search(string path, JSearchOptions searchOptions) ...{ int SearchFailed = -1; try ...{ string[] dirs = Directory.GetDirectories(path); SetDirMethod(dirs); if (searchOptions == JSearchOptions.AllDirectories) ...{ if (dirs.Length > 0) ...{ for (int i = 0; i < dirs.Length; i++) ...{ try ...{ SearchFailed += Search(dirs[i], searchOptions); } catch (Exception e) ...{ SearchFailed++; SetErrorMethod(path, e); continue; } } } } string[] files = Directory.GetFiles(path); SetFileMethod(files); return (SearchFailed + 1); } catch (Exception e) ...{ SetErrorMethod(path, e); } return SearchFailed; } public int Search(string path, string searchPattern, JPatternOptions patternOptions) ...{ int SearchFailed = -1; try ...{ string[] dirs = new string[0]; string[] files = new string[0]; if ((patternOptions == JPatternOptions.Both) || (patternOptions == JPatternOptions.OnlyDirectories)) ...{ dirs = Directory.GetDirectories(path, searchPattern); } else ...{ dirs = Directory.GetDirectories(path); } SetDirMethod(dirs); if (dirs.Length > 0) ...{ for (int i = 0; i < dirs.Length; i++) ...{ try ...{ SearchFailed += Search(dirs[i], searchPattern, patternOptions); } catch (Exception e) ...{ SetErrorMethod(path, searchPattern, e); SearchFailed++; continue; } } } if ((patternOptions == JPatternOptions.Both) || (patternOptions == JPatternOptions.OnlyFiles)) ...{ files = Directory.GetFiles(path, searchPattern); } else ...{ files = Directory.GetFiles(path); } SetFileMethod(files); return (SearchFailed + 1); } catch (Exception e) ...{ SetErrorMethod(path, searchPattern, e); } return SearchFailed; } public int Search(string path, string searchPattern, JPatternOptions patternOptions, JSearchOptions searchOptions) ...{ int SearchFailed = -1; try ...{ string[] dirs = new string[0]; string[] files = new string[0]; if ((patternOptions == JPatternOptions.Both) || (patternOptions == JPatternOptions.OnlyDirectories)) ...{ dirs = Directory.GetDirectories(path, searchPattern); } else ...{ dirs = Directory.GetDirectories(path); } SetDirMethod(dirs); if (searchOptions == JSearchOptions.AllDirectories) ...{ if (dirs.Length > 0) ...{ for (int i = 0; i < dirs.Length; i++) ...{ try ...{ SearchFailed += Search(dirs[i], searchPattern, patternOptions, searchOptions); } catch (Exception e) ...{ SetErrorMethod(path, searchPattern, e); SearchFailed++; continue; } } } } if ((patternOptions == JPatternOptions.Both) || (patternOptions == JPatternOptions.OnlyFiles)) ...{ files = Directory.GetFiles(path, searchPattern); } else ...{ files = Directory.GetFiles(path); } SetFileMethod(files); return (SearchFailed + 1); } catch (Exception e) ...{ SetErrorMethod(path, searchPattern, e); } return SearchFailed; } }}