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); }