internal void Collect(string sourceDir, string dstDir) { if (sourceDir == null || dstDir == null) { return; } IFileCache fileCache = InitFileCache(dstDir); if (Directory.Exists(sourceDir)) { string fileName; string destFile; string[] files = Directory.GetFiles(sourceDir); foreach (string sourceFile in files) { using (FileStream sourceFileStream = new FileStream(sourceFile, FileMode.Open, FileAccess.Read)) { if (fileCache.Contains(sourceFileStream)) { continue; } try { using (Image img = Image.FromStream(sourceFileStream)) { // Use static Path methods to extract only the file name from the path. fileName = Path.GetFileName(sourceFile) + _fileType; destFile = Path.Combine(dstDir, fileName); if (CanCopy(img)) { File.Copy(sourceFile, destFile, false); fileCache.AddEntry(sourceFileStream.Length); _logger.Add($"File Added: {fileName}"); } } } catch (Exception e) { Console.WriteLine(e); } } } } else { Console.WriteLine("Source path does not exist!"); } fileCache.Dispose(); _logger.Dispose(); }