Похоже, у вас здесь две функции:
1) Найдите файлы с такими именами, как ACCESS *
2) Найдите в этих файлах строки типа «Identity = *»
Чтобы сделать первое, используйте объект DirectoryInfo и метод GetFiles () с шаблоном поиска «ACCESS *».
DirectoryInfo myDir = new DirectoryInfo(dirPath);
var files = DirectoryInfo.GetFiles("ACCESS*");
Затем вы будете перебирать эти файлы в поисках нужных вам данных.
List<Tuple<string, string>> IdentityLines = new List<Tuple<string, string>>();//Item1 = filename, Item2 = line
foreach(FileInfo file in files)
{
using(StreamReader sr = new StreamReader(file.FullName) //double check that file.FullName I don't remember for sure if it's right
{
while(!string.IsNullOrEmpty(string line = sr.Read())
{
if(line.StartsWith("Identity="))
IdentityLines.Add(file.FileName, line);
}
}
}
Это не скомпилировано, поэтому проверьте его дважды, но оно должно быть достаточно близко к тому, что вам нужно.
РЕДАКТИРОВАТЬ : Добавлено полное решение на основе комментариев от ОП. Был скомпилирован и запущен.
DirectoryInfo myDir = new DirectoryInfo(@"C:\Testing");
var Files = myDir.GetFiles("ACCESS*");
List<KeyValuePair<string, string>> IdentityLines = new List<KeyValuePair<string, string>>();
foreach(FileInfo file in Files)
{
string line = "";
using(StreamReader sr = new StreamReader(file.FullName))
{
while(!String.IsNullOrEmpty(line = sr.ReadLine()))
{
if(line.ToUpper().StartsWith("IDENTITY="))
IdentityLines.Add(new KeyValuePair<string, string>(file.Name, line));
}
}
}
foreach(KeyValuePair<string, string> line in IdentityLines)
{
Console.WriteLine("FileName {0}, Line {1}", line.Key, line.Value);
}