- class QueryContents
- {
- public static void Main()
- {
- // Modify this path as necessary.
- string startFolder = @"c:\program files\Microsoft Visual Studio 9.0\";
-
- // Take a snapshot of the file system.
- System.IO.DirectoryInfo dir = new System.IO.DirectoryInfo(startFolder);
-
- // This method assumes that the application has discovery permissions
- // for all folders under the specified path.
- IEnumerable
fileList = dir.GetFiles("*.*", System.IO.SearchOption.AllDirectories); -
- string searchTerm = @"Visual Studio";
-
- // Search the contents of each file.
- // A regular expression created with the RegEx class
- // could be used instead of the Contains method.
- // queryMatchingFiles is an IEnumerable
. - var queryMatchingFiles =
- from file in fileList
- where file.Extension == ".htm"
- let fileText = GetFileText(file.FullName)
- where fileText.Contains(searchTerm)
- select file.FullName;
-
- // Execute the query.
- Console.WriteLine("The term \"{0}\" was found in:", searchTerm);
- foreach (string filename in queryMatchingFiles)
- {
- Console.WriteLine(filename);
- }
-
- // Keep the console window open in debug mode.
- Console.WriteLine("Press any key to exit");
- Console.ReadKey();
- }
-
- // Read the contents of the file.
- static string GetFileText(string name)
- {
- string fileContents = String.Empty;
-
- // If the file has been deleted since we took
- // the snapshot, ignore it and return the empty string.
- if (System.IO.File.Exists(name))
- {
- fileContents = System.IO.File.ReadAllText(name);
- }
- return fileContents;
- }
- }