private void ReadDirectoryEntries() { this.DirectoryStream = new MemoryStream(this.GetStreamDataAsBytes(this.Header.FirstSectorIDofDirectoryStream)); BinaryReader reader = new BinaryReader(this.DirectoryStream, Encoding.Unicode); this.DirectoryEntries = new Dictionary <int, DirectoryEntry>(); DirectoryEntry directoryEntry = CompoundDocument.ReadDirectoryEntry(reader); directoryEntry.Document = this; directoryEntry.ID = 0; this.DirectoryEntries.Add(0, directoryEntry); this.ShortStreamContainer = new MemoryStream(this.GetStreamDataAsBytes(directoryEntry.FirstSectorID, directoryEntry.StreamLength)); this.ReadDirectoryEntry(reader, directoryEntry.MembersTreeNodeDID, directoryEntry); }
private void ReadDirectoryEntry(BinaryReader reader, int DID, DirectoryEntry parent) { if (DID != -1 && !this.DirectoryEntries.ContainsKey(DID)) { reader.BaseStream.Position = (long)checked (DID * 128); DirectoryEntry directoryEntry = CompoundDocument.ReadDirectoryEntry(reader); directoryEntry.Document = this; directoryEntry.ID = DID; this.DirectoryEntries[DID] = directoryEntry; parent.AddChild(directoryEntry); this.ReadDirectoryEntry(reader, directoryEntry.LeftChildDID, parent); this.ReadDirectoryEntry(reader, directoryEntry.RightChildDID, parent); this.ReadDirectoryEntry(reader, directoryEntry.MembersTreeNodeDID, directoryEntry); } }