public void OpenFiles()
{
if (string.IsNullOrWhiteSpace(m_fileName))
throw new InvalidOperationException("First COMTRADE data file name was not specified, cannot open files.");
if (!File.Exists(m_fileName))
throw new FileNotFoundException(string.Format("Specified COMTRADE data file \"{0}\" was not found, cannot open files.", m_fileName));
// Get all data files in the collection
const string FileRegex = @"(?:\.dat|\.d\d\d)$";
string directory = FilePath.GetDirectoryName(m_fileName);
string rootFileName = FilePath.GetFileNameWithoutExtension(m_fileName);
string extension = FilePath.GetExtension(m_fileName).Substring(0, 2) + "*";
string[] fileNames = FilePath.GetFileList(Path.Combine(directory, rootFileName + extension))
.Where(fileName => Regex.IsMatch(fileName, FileRegex, RegexOptions.IgnoreCase))
.OrderBy(fileName => fileName, StringComparer.OrdinalIgnoreCase)
.ToArray();
// Create a new file stream for each file
m_fileStreams = new FileStream[fileNames.Length];
for (int i = 0; i < fileNames.Length; i++)
{
m_fileStreams[i] = new FileStream(fileNames[i], FileMode.Open, FileAccess.Read, FileShare.Read);
}
m_streamIndex = 0;
}