示例#1
0
        private static void IterateDirectories(string p_TargetDir, string p_FilePattern,
                                               ref Hashtable p_htDirs, ref Hashtable p_htFiles)
        {
            try
            {
                string[] files = Directory.GetFiles(p_TargetDir, p_FilePattern);//, p_FilePattern + "*.*");
                string[] Dirs  = Directory.GetDirectories(p_TargetDir);
                // remove the sent in directory immediately
                p_htDirs.Remove(p_TargetDir);

                Hashtable htLocalDir   = new Hashtable(5000);
                Hashtable htLocalFiles = new Hashtable(5000);
                int       DirCount     = 0;
                int       FileCount    = 0;
                // add all subdirectories
                for (DirCount = 0; DirCount < Dirs.Length; DirCount++)
                {
                    try
                    {
                        p_htDirs.Add(Dirs[DirCount], Dirs[DirCount]);
                        htLocalDir.Add(Dirs[DirCount], Dirs[DirCount]);
                    }
                    catch //(System.ArgumentException ex)
                    {
                    }
                }

                // add all files
                for (FileCount = 0; FileCount < files.Length; FileCount++)
                {
                    try
                    {
                        count++;

                        p_htFiles.Add(files[FileCount], files[FileCount]);
                        htLocalFiles.Add(files[FileCount], files[FileCount]);
                    }
                    catch //(System.ArgumentException ex)
                    {
                    }
                }

                while (htLocalDir.Count > 0)
                {
                    System.Collections.IDictionaryEnumerator LocalDirEnum;
                    LocalDirEnum = htLocalDir.GetEnumerator();
                    LocalDirEnum.MoveNext();

                    htLocalDir.Remove(LocalDirEnum.Key.ToString());
                }
                // iterate through all of the files in the current directory
                while (htLocalFiles.Count > 0)
                {
                    System.Collections.IDictionaryEnumerator LocalFileEnum;
                    LocalFileEnum = htLocalFiles.GetEnumerator();
                    LocalFileEnum.MoveNext();

                    htLocalFiles.Remove(LocalFileEnum.Key.ToString());
                }
            }
            catch //(System.UnauthorizedAccessException myEx)
            {
                p_htDirs.Remove(p_TargetDir);
            }
        }
示例#2
0
        private static void IterateDirectories(string p_TargetDir, string [] p_FilePattern,
                                               ref Hashtable p_htDirs, ref Hashtable p_htFiles)
        {
            try
            {
                string[]  files    = null;
                ArrayList FileList = new ArrayList();
                foreach (string strPattern in p_FilePattern)
                {
                    files = Directory.GetFiles(p_TargetDir, strPattern);
                    foreach (string filename in files)
                    {
                        FileList.Add(filename);
                    }
                }

                string [] Dirs = Directory.GetDirectories(p_TargetDir);
                // remove the sent in directory immediately
                p_htDirs.Remove(p_TargetDir);

                Hashtable htLocalDir   = new Hashtable(5000);
                Hashtable htLocalFiles = new Hashtable(5000);
                int       DirCount     = 0;
                int       FileCount    = 0;
                // add all subdirectories
                for (DirCount = 0; DirCount < Dirs.Length; DirCount++)
                {
                    try
                    {
                        p_htDirs.Add(Dirs[DirCount], Dirs[DirCount]);
                        htLocalDir.Add(Dirs[DirCount], Dirs[DirCount]);
                    }
                    catch                     //(System.ArgumentException ex)
                    {
                        //Console.WriteLine(ex.Message);
                    }
                }

                // add all files
                for (FileCount = 0; FileCount < FileList.Count; FileCount++)
                {
                    try
                    {
                        p_htFiles.Add(FileList[FileCount], FileList[FileCount]);
                        htLocalFiles.Add(FileList[FileCount], FileList[FileCount]);
                    }
                    catch                     //(System.ArgumentException ex)
                    {
                        //Console.WriteLine(ex.Message );
                    }
                }
                while (htLocalDir.Count > 0)
                {
                    System.Collections.IDictionaryEnumerator LocalDirEnum;
                    LocalDirEnum = htLocalDir.GetEnumerator();
                    LocalDirEnum.MoveNext();
                    // RAD 12/01/04 Console.WriteLine(myEnumerator.Key.ToString());
                    htLocalDir.Remove(LocalDirEnum.Key.ToString());
                }
                // iterate through all of the files in the current directory
                while (htLocalFiles.Count > 0)
                {
                    System.Collections.IDictionaryEnumerator LocalFileEnum;
                    LocalFileEnum = htLocalFiles.GetEnumerator();
                    LocalFileEnum.MoveNext();
                    // RAD 12/01/04 Console.WriteLine(myEnumerator.Key.ToString());
                    htLocalFiles.Remove(LocalFileEnum.Key.ToString());
                }
            }
            catch             //(System.UnauthorizedAccessException myEx)
            {
                p_htDirs.Remove(p_TargetDir);
            }
        }