Ejemplo n.º 1
0
        void ArchiveImage(string folderPath, List <string> foundFiles)
        {
            if (Directory.Exists(folderPath))
            {
                var files   = Directory.GetFiles(folderPath);
                var folders = Directory.GetDirectories(folderPath);

                foreach (var file in files)
                {
                    using (var fileStream = File.OpenRead(file))
                    {
                        var fileName   = Path.GetFileName(file);
                        var originType = Path.GetExtension(file);
                        var result     = checker.GetFileType(fileStream);
                        if (string.IsNullOrEmpty(result.Extension))
                        {
                            continue;
                        }

                        foundFiles.Add(file);
                    }
                }

                foreach (var folder in folders)
                {
                    ArchiveImage(folder, foundFiles);
                }
            }
        }
            public void ItDoesntDetectBMPs()
            {
                checker = new FileTypeChecker(new List <FileType>
                {
                    new FileType("Portable Network Graphic", ".png",
                                 new ExactFileTypeMatcher(new byte[] { 0x89, 0x50, 0x4E, 0x47, 0x0D, 0x0A, 0x1A, 0x0A })),
                    new FileType("JPEG", ".jpg",
                                 new FuzzyFileTypeMatcher(new byte?[] { 0xFF, 0xD, 0xFF, 0xE0, null, null, 0x4A, 0x46, 0x49, 0x46, 0x00 })),
                    new FileType("Graphics Interchange Format 87a", ".gif",
                                 new ExactFileTypeMatcher(new byte[] { 0x47, 0x49, 0x46, 0x38, 0x37, 0x61 })),
                    new FileType("Graphics Interchange Format 89a", ".gif",
                                 new ExactFileTypeMatcher(new byte[] { 0x47, 0x49, 0x46, 0x38, 0x39, 0x61 })),
                    new FileType("Portable Document Format", ".pdf", new RangeFileTypeMatcher(new ExactFileTypeMatcher(new byte[] { 0x25, 0x50, 0x44, 0x46 }), 1019))
                    // ... Potentially more in future
                });
                var fileType = checker.GetFileType(bitmap);

                Assert.AreEqual(
                    "unknown",
                    fileType.Name);
            }
            public void ItDoesntDetectPDFs()
            {
                var pdf = LoadFile("Resources/pdf.pdf");

                checker = new FileTypeChecker(new List <FileType>
                {
                    new FileType("Bitmap", ".bmp", new ExactFileTypeMatcher(new byte[] { 0x42, 0x4d })),
                    new FileType("Portable Network Graphic", ".png",
                                 new ExactFileTypeMatcher(new byte[] { 0x89, 0x50, 0x4E, 0x47, 0x0D, 0x0A, 0x1A, 0x0A })),
                    new FileType("JPEG", ".jpg",
                                 new FuzzyFileTypeMatcher(new byte?[] { 0xFF, 0xD, 0xFF, 0xE0, null, null, 0x4A, 0x46, 0x49, 0x46, 0x00 })),
                    new FileType("Graphics Interchange Format 87a", ".gif",
                                 new ExactFileTypeMatcher(new byte[] { 0x47, 0x49, 0x46, 0x38, 0x37, 0x61 })),
                    new FileType("Graphics Interchange Format 89a", ".gif",
                                 new ExactFileTypeMatcher(new byte[] { 0x47, 0x49, 0x46, 0x38, 0x39, 0x61 }))
                    // ... Potentially more in future
                });
                var fileType = checker.GetFileType(pdf);

                Assert.AreEqual(
                    "unknown",
                    fileType.Name);
            }