/// <summary> /// Tworzy plik dla danego katalogu z posumowanymi wsystkimi wyst¹pieniami s³ów. /// Zostaje przeszukany tylko ten katalog - podkatalogi nie s¹ uwzglêdniane. /// </summary> /// <param name="sourceDir">Katalog, w którym znajduj¹ siê pliki z danymi.</param> /// <param name="pattern">Wzorzec plików, dla których ma byæ sumowanie np. ".cat".</param> /// <param name="resultFileName">Œcie¿ka do pliku z wynikami.</param> public static void SumWords(String sourceDir, String pattern, String resultFileName) { //Dictionary<String, int> wordsInFiles = new Dictionary<String, int>(); Dictionary <String, WordInfo> wordsInFiles = new Dictionary <String, WordInfo>(); DirectoryInfo sourceDirInfo = new DirectoryInfo(sourceDir); foreach (FileInfo sourceFile in sourceDirInfo.GetFiles(pattern)) //przechodzê przez wszystkie pliki { Console.WriteLine("Processing file: " + sourceFile); StreamReader sr = new StreamReader(sourceFile.FullName); String tmpLine; //String[] splittedLine; while ((tmpLine = sr.ReadLine()) != null && tmpLine.Length > 0) { //splittedLine = tmpLine.Split(' '); //String word = splitedLine[0]; //int count = int.Parse(splitedLine[1]); WordInfo newWordInfo = WordInfo.Parse(tmpLine); //dodanie s³owa do s³ownika lub zwiêkszenie jego wartoœci if (wordsInFiles.ContainsKey(newWordInfo.Word)) { WordInfo storedWordInfo = wordsInFiles[newWordInfo.Word]; storedWordInfo.Count += newWordInfo.Count; storedWordInfo.InclDocCount += newWordInfo.InclDocCount; } else { wordsInFiles.Add(newWordInfo.Word, newWordInfo); } } sr.Close(); } //utworzenie pliku wynikowego FileStream fs = new FileStream(resultFileName, FileMode.Create); StreamWriter sw = new StreamWriter(fs); foreach (String word in wordsInFiles.Keys) { sw.WriteLine(wordsInFiles[word]); } sw.Close(); fs.Close(); }