示例#1
0
        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);
        }
示例#2
0
 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);
     }
 }