public static Table OpenRead(string directory) { // get the filename of the manifest. var current = File.ReadAllLines(Path.Combine(directory, "CURRENT")); if (current.Length < 1) { throw new Exception("Invalid CURRENT file."); } // read the manifest file. var versionSet = new VersionSet(); var block = new byte[32768]; using (var file = File.OpenRead(Path.Combine(directory, current[0]))) { var recordReader = new RecordReader(); int numRead = 0; do { numRead = file.Read(block); if (numRead > 0) { var sequence = new ReadOnlySequence <byte>(block); var reader = new SequenceReader <byte>(sequence); while (reader.Remaining > 6) { if (!recordReader.From(ref reader, record => versionSet.Add(record))) { break; } } } } while (numRead >= block.Length); } return(new Table(directory, versionSet)); }