private IEnumerable <string> GetAllFilesInDirectory(string directoryPath, Delimon.Win32.IO.SearchOption searchOption) { IEnumerable <string> files = null; IEnumerable <string> subdirectories = null; try { files = Directory.EnumerateFiles(directoryPath.LongPathFormat()); subdirectories = Directory.EnumerateDirectories(directoryPath.LongPathFormat()); } catch (UnauthorizedAccessException) { if (null != Logger) { Logger.Error(string.Format("--- GetAllFilesInDirectory: No permission to access folder {0}", directoryPath)); } } catch (IOException e) { if (null != Logger) { Logger.Error(string.Format("--- GetAllFilesInDirectory: I/O error: {0}", e.Message)); } } if (files != null) { var f = _currentFiles; foreach (string file in files) { f.Add(file.LongPathFormat()); CurrentFiles = f; yield return(file); } } if (subdirectories != null && searchOption == Delimon.Win32.IO.SearchOption.AllDirectories) { foreach (string subdirectory in subdirectories) { if ((Delimon.Win32.IO.File.GetAttributes(subdirectory) & Delimon.Win32.IO.FileAttributes.ReparsePoint) != Delimon.Win32.IO.FileAttributes.ReparsePoint) { foreach (string file in GetAllFilesInDirectory(subdirectory, searchOption)) { CurrentFiles.Add(file.LongPathFormat()); yield return(file.LongPathFormat()); } } else if (null != Logger) { Logger.Warn(string.Format("{0} --- JUNCTION detected, skipped", subdirectory)); } } } }
override protected IEnumerable <string> GetAllFilesInDirectory(string directoryPath, Delimon.Win32.IO.SearchOption searchOption) { IEnumerable <string> files = null; IEnumerable <string> subdirectories = null; GetEntries(directoryPath, ref files, ref subdirectories); if (files != null) { foreach (string file in files) { _currentFiles.Clear(); if (FilterList.Contains(file) || IsExclusion(file)) { continue; } UpdateResults(file); if (_yieldCount >= ReturnCount) { break; } yield return(file); } } if (subdirectories != null && searchOption == Delimon.Win32.IO.SearchOption.AllDirectories) { foreach (string subdirectory in subdirectories) { if ((Delimon.Win32.IO.File.GetAttributes(subdirectory) & Delimon.Win32.IO.FileAttributes.ReparsePoint) != Delimon.Win32.IO.FileAttributes.ReparsePoint) { foreach (string file in GetAllFilesInDirectory(subdirectory, searchOption)) { _currentFiles.Clear(); if (FilterList.Contains(file) || IsExclusion(file)) { continue; } UpdateResults(file); if (_yieldCount >= ReturnCount) { break; } yield return(file); } } else if (null != Logger) { Logger.Warn(string.Format("{0} --- JUNCTION detected, skipped", subdirectory)); } } } }
override protected IEnumerable <string> GetAllFilesInDirectory(string directoryPath, Delimon.Win32.IO.SearchOption searchOption) { IEnumerable <string> files = null; IEnumerable <string> subdirectories = null; GetEntries(directoryPath, ref files, ref subdirectories); if (files != null) { var f = _currentFiles; foreach (string file in files) { ZipProviderContainer.Instance.ZipProvider.SourcArchive = file; if (!ZipProviderContainer.Instance.ZipProvider.IsArchive) { continue; } f.Add(file.LongPathFormat()); CurrentFiles = f; yield return(file); } } if (subdirectories != null && searchOption == Delimon.Win32.IO.SearchOption.AllDirectories) { foreach (string subdirectory in subdirectories) { if ((Delimon.Win32.IO.File.GetAttributes(subdirectory) & Delimon.Win32.IO.FileAttributes.ReparsePoint) != Delimon.Win32.IO.FileAttributes.ReparsePoint) { foreach (string file in GetAllFilesInDirectory(subdirectory, searchOption)) { ZipProviderContainer.Instance.ZipProvider.SourcArchive = file; if (!ZipProviderContainer.Instance.ZipProvider.IsArchive) { continue; } CurrentFiles.Add(file.LongPathFormat()); _deepLevel++; yield return(file.LongPathFormat()); } } else if (null != Logger) { Logger.Warn(string.Format("{0} --- JUNCTION detected, skipped", subdirectory)); } } } }
override protected IEnumerable <string> GetAllFilesInDirectory(string directoryPath, Delimon.Win32.IO.SearchOption searchOption) { IEnumerable <string> files = null; IEnumerable <string> subdirectories = null; GetEntries(directoryPath, ref files, ref subdirectories); if (files != null) { var f = _currentFiles; foreach (string file in files) { if (_isComplete) { break; } while (Pause) { Application.DoEvents(); } if (!f.Contains(file)) { f.Add(file.LongPathFormat()); } CurrentFiles = f; yield return(file); } } if (subdirectories != null && searchOption == Delimon.Win32.IO.SearchOption.AllDirectories) { foreach (string subdirectory in subdirectories) { if (_isComplete) { break; } var valid = false; try { valid = (Delimon.Win32.IO.File.GetAttributes(subdirectory) & Delimon.Win32.IO.FileAttributes.ReparsePoint) != Delimon.Win32.IO.FileAttributes.ReparsePoint; } catch (Exception ex) { if (null != Logger) { Logger.Error(string.Format("{0} --- Exception at GetAllFilesInDirectory, error was : {0}", ex.Message)); } } if (valid) { foreach (string file in GetAllFilesInDirectory(subdirectory, searchOption)) { if (_isComplete) { break; } while (Pause) { Application.DoEvents(); } if (!CurrentFiles.Contains(file)) { CurrentFiles.Add(file.LongPathFormat()); } yield return(file.LongPathFormat()); } } else if (null != Logger) { Logger.Warn(string.Format("{0} --- JUNCTION detected, skipped", subdirectory)); } } } }