/// <summary> /// Creates Root Directory catalog from XlsHeader /// </summary> /// <param name="hdr">XlsHeader object</param> public XlsRootDirectory(XlsHeader hdr) { XlsStream stream = new XlsStream(hdr, hdr.RootDirectoryEntryStart); byte[] array = stream.ReadStream(); byte[] tmp; XlsDirectoryEntry entry; List<XlsDirectoryEntry> entries = new List<XlsDirectoryEntry>(); for (int i = 0; i < array.Length; i += XlsDirectoryEntry.Length) { tmp = new byte[XlsDirectoryEntry.Length]; Buffer.BlockCopy(array, i, tmp, 0, tmp.Length); entries.Add(new XlsDirectoryEntry(tmp)); } m_entries = entries; for (int i = 0; i < entries.Count; i++) { entry = entries[i]; if (m_root == null && entry.EntryType == STGTY.STGTY_ROOT) m_root = entry; if (entry.ChildSid != (uint)FATMARKERS.FAT_FreeSpace) entry.Child = entries[(int)entry.ChildSid]; if (entry.LeftSiblingSid != (uint)FATMARKERS.FAT_FreeSpace) entry.LeftSibling = entries[(int)entry.LeftSiblingSid]; if (entry.RightSiblingSid != (uint)FATMARKERS.FAT_FreeSpace) entry.RightSibling = entries[(int)entry.RightSiblingSid]; } }
/// <summary> /// Creates Root Directory catalog from XlsHeader /// </summary> /// <param name="hdr">XlsHeader object</param> public XlsRootDirectory(XlsHeader hdr) { XlsStream stream = new XlsStream(hdr, hdr.RootDirectoryEntryStart); byte[] array = stream.ReadStream(); byte[] tmp; XlsDirectoryEntry entry; List <XlsDirectoryEntry> entries = new List <XlsDirectoryEntry>(); for (int i = 0; i < array.Length; i += XlsDirectoryEntry.Length) { tmp = new byte[XlsDirectoryEntry.Length]; Buffer.BlockCopy(array, i, tmp, 0, tmp.Length); entries.Add(new XlsDirectoryEntry(tmp)); } m_entries = entries; for (int i = 0; i < entries.Count; i++) { entry = entries[i]; if (m_root == null && entry.EntryType == STGTY.STGTY_ROOT) { m_root = entry; } if (entry.ChildSid != (uint)FATMARKERS.FAT_FreeSpace) { entry.Child = entries[(int)entry.ChildSid]; } if (entry.LeftSiblingSid != (uint)FATMARKERS.FAT_FreeSpace) { entry.LeftSibling = entries[(int)entry.LeftSiblingSid]; } if (entry.RightSiblingSid != (uint)FATMARKERS.FAT_FreeSpace) { entry.RightSibling = entries[(int)entry.RightSiblingSid]; } } }