ExcelToolKit.BinaryFormat.XlsFat.XlsFat C# (CSharp) Method

XlsFat() public method

Constructs FAT table from list of sectors
public XlsFat ( XlsHeader hdr, List sectors, int sizeOfSector, bool isMini, XlsRootDirectory rootDir ) : System
hdr XlsHeader XlsHeader
sectors List Sectors list
sizeOfSector int
isMini bool
rootDir XlsRootDirectory
return System
        public XlsFat(XlsHeader hdr, List<uint> sectors, int sizeOfSector, bool isMini, XlsRootDirectory rootDir){
            m_sectorSize = sizeOfSector;
            m_isMini=isMini;
            m_rootDir=rootDir;
            m_hdr=hdr;
            m_sectors_for_fat=sectors.Count;
            sizeOfSector=hdr.SectorSize;
            uint prevSector=0;

            //calc offset of stream . If mini stream then find mini stream container stream
            //long offset = 0;
            //if (rootDir != null)
            //	offset = isMini ? (hdr.MiniFatFirstSector + 1) * hdr.SectorSize : 0;

            var buff=new byte[sizeOfSector];
            Stream file=hdr.FileStream;
            using (var ms=new MemoryStream(sizeOfSector*m_sectors_for_fat)) {
                lock (file) {
                    foreach (uint sector in sectors){
                        if (prevSector==0||(sector-prevSector)!=1){
                            file.Seek((sector+1)*sizeOfSector, SeekOrigin.Begin);                            
                        }
                        prevSector=sector;
                        file.Read(buff, 0, sizeOfSector);
                        ms.Write(buff, 0, sizeOfSector);
                    }
                }
                ms.Seek(0, SeekOrigin.Begin);
                var rd=new BinaryReader(ms);
                m_sectors=(int)ms.Length/4;
                m_fat=new List<uint>(m_sectors);
                for (int i=0; i<m_sectors; i++)
                    m_fat.Add(rd.ReadUInt32());
                rd.Close();
                ms.Close();
            }
        }