Вы можете сделать это довольно легко.
Проблема состоит из трех частей.
1) Как найти, где начинается строка в файле. Единственный способ сделать это - прочитать строки из файла, сохранив список, в котором записана начальная позиция в файле этой строки. * например 1005 *
List lineMap = new List();
lineMap.Add(0); // Line 0 starts at location 0 in the data file (just a dummy entry)
lineMap.Add(0); // Line 1 starts at location 0 in the data file
using (StreamReader sr = new StreamReader("DataFile.txt"))
{
String line;
int lineNumber = 1;
while ((line = sr.ReadLine()) != null)
lineMap.Add(sr.BaseStream.Position);
}
2) Прочитайте и проанализируйте ваш индексный файл в словаре.
Dictionary index = new Dictionary();
using (StreamReader sr = new StreamReader("IndexFile.txt"))
{
String line;
while ((line = sr.ReadLine()) != null)
{
string[] parts = line.Split(' '); // Break the line into the name & line number
index.Add(parts[0], Convert.ToInt32(parts[1]));
}
}
Затем, чтобы найти строку в вашем файле, используйте:
int lineNumber = index["SECTION_B";]; // Convert section name into the line number
long offsetInDataFile = lineMap[lineNumber]; // Convert line number into file offset
Затем откройте новый FileStream в DataFile.txt, Seek (offsetInDataFile, SeekOrigin.Begin), чтобы перейти к началу строки, и используйте StreamReader (как указано выше), чтобы прочитать строки из него.