using System; using System.Security; using System.IO; using System.Drawing; using System.Drawing.Imaging; /* * FindFiles sample by Nick Codignotto * Copyright (c) 2003 Nick Codignotto * Permission to include this source code in your own programs is given * with no restrictions. Parts of this source may be covered by external * copyrights and every effort to credit these external sources has been * made. */ namespace FindFiles { /* * Credit: http://www.aspheute.com/english/20001130.asp */ public class ImageInfo { Bitmap bitmapRepresentation; public void Load(string strImageFile) { bitmapRepresentation = new Bitmap(strImageFile, false); } public void Unload() { bitmapRepresentation.Dispose(); bitmapRepresentation = null; } public int Height { get { return bitmapRepresentation.Height; } } public int Width { get { return bitmapRepresentation.Width; } } public string Format { get { ImageFormat bmpFormat = bitmapRepresentation.RawFormat; string strFormat = "unidentified format"; if (bmpFormat.Equals(ImageFormat.Bmp)) strFormat = "BMP"; else if (bmpFormat.Equals(ImageFormat.Emf)) strFormat = "EMF"; else if (bmpFormat.Equals(ImageFormat.Exif)) strFormat = "EXIF"; else if (bmpFormat.Equals(ImageFormat.Gif)) strFormat = "GIF"; else if (bmpFormat.Equals(ImageFormat.Icon)) strFormat = "Icon"; else if (bmpFormat.Equals(ImageFormat.Jpeg)) strFormat = "JPEG"; else if (bmpFormat.Equals(ImageFormat.MemoryBmp)) strFormat = "MemoryBMP"; else if (bmpFormat.Equals(ImageFormat.Png)) strFormat = "PNG"; else if (bmpFormat.Equals(ImageFormat.Tiff)) strFormat = "TIFF"; else if (bmpFormat.Equals(ImageFormat.Wmf)) strFormat = "WMF"; return strFormat; } } } interface FileAction { bool doAction(FileInfo file); } public class PrintAction: FileAction { public bool doAction(FileInfo file) { ImageInfo image = new ImageInfo(); try { image.Load(file.FullName); Console.WriteLine(file.FullName + " " + image.Width + "x" + image.Height); image.Unload(); return true; } catch (System.ArgumentException) { return false; } } } public class FindFiles { static int traverseFiles(FileAction action, DirectoryInfo dir) { int numFiles = 0; FileInfo[] files = dir.GetFiles(); foreach (FileInfo f in files) { if (action.doAction(f)) { numFiles++; } } DirectoryInfo[] subdirs = dir.GetDirectories(); foreach (DirectoryInfo d in subdirs) { numFiles += traverseFiles(action, d); } return numFiles; } static void Main(string[] argv) { String dir; if(argv.Length==0) { dir = "."; } else { dir = argv[0]; } DirectoryInfo dirInfo = new DirectoryInfo(dir); if (dirInfo.Exists) { int numFiles = traverseFiles(new PrintAction(), dirInfo); Console.WriteLine("Found " + numFiles + " file(s)."); } else { Console.WriteLine("This directory does not exist."); } } } }