Esempio n. 1
0
        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();
        }