Пример использования потоков файлов:
/// <summary>
/// Get a collection of index,string for everything inside p tags in the html file
/// </summary>
/// <param name="htmlFilename">filename of the html file</param>
/// <returns>collection of index,string</returns>
private Dictionary<long, string> GetHtmlIndexes(string htmlFilename)
{
//init result
Dictionary<long, string> result = new Dictionary<long, string>();
StreamReader sr = null;
try
{
sr = new StreamReader(htmlFilename);
long offsetIndex = 0;
while (!sr.EndOfStream)
{
string line = sr.ReadLine(); //assuming html isn't condensed into 1 single line
offsetIndex += line.Length; //assuming 'index' you require is the file offset
int openingIndex = line.IndexOf(@"<p");
int closingIndex = line.IndexOf(@">");
if ( openingIndex > -1)
{
int contentIndex = openingIndex + 3; // as in <p tag or <p>tag
string pTagContent = line.Substring( contentIndex);
if(closingIndex> contentIndex)
{
int tagLength = closingIndex - contentIndex;
pTagContent = line.Substring( contentIndex, tagLength);
}
//else, the tag finishes on next or subsequent lines and we only get content from this line
result.Add(offsetIndex + contentIndex, pTagContent);
}
} //end file loop
}
catch (Exception ex)
{
//handle error ex
}
finally
{
if(sr!=null)
sr.Close();
}
return result;
}
Это имеет ограничения, которые вы можете увидеть в комментариях.
Я подозреваю, что использование LINQ будет намного аккуратнее. Я надеюсь, что это дает вам отправную точку?