|
|
Gleichnamige Typen aus verschiedenen Namensräumen
ParallelSearch.cs
/* Paralleles Lesen und Suchen in Textdateien
------------------------------------------
Es sollen alle C#-Dateien eines Verzeichnisses gelistet werden,
die einen bestimmten Suchstring enthalten. Das Lesen der einzelnen
Dateien sowie das Suchen in ihnen soll parallel mittels Parallel.ForEach()
erfolgen.
Der Name des zu durchsuchenden Verzeichnisses sowie das Suchmuster
werden als Kommandozeilenargumente uebergeben.
Aufruf: ParallelSearch directoryName searchPattern
------------------------------------------------------------*/
using System;
using System.IO;
using System.Threading.Tasks;
public class ParallelSearch {
public static void Main(string[] arg) {
if (arg.Length == 2) {
try {
string dirName = arg[0];
string pattern = arg[1];
//-- get the names of all files in the directory
DirectoryInfo dir = new DirectoryInfo(dirName);
FileInfo[] files = dir.GetFiles("*.cs");
//-- read and search the files in parallel;
Console.WriteLine("Files in " + dir.FullName + " containing '" + pattern + "'");
Parallel.ForEach(files, file => {
StreamReader r = new StreamReader(file.FullName);
string s = r.ReadToEnd();
if (s.IndexOf(pattern) >= 0){
Console.WriteLine(" " + file.Name);
}
});
} catch (ArgumentException) {
Console.WriteLine("-- Invalid directory name");
}
} else {
Console.WriteLine("-- Synopsis: AsyncSearch directoryName searchPattern");
}
}
}
|
|