public void ReadHeader(string filePath) { using (var stream1 = new FileStream(filePath, FileMode.Open, FileAccess.Read, FileShare.None)) { stream1.Position = 0; using (var reader = new BinaryReader(stream1)) { while (stream1.Position < FILE_HEADER_SIZE) { Header = HeaderFromReader(reader); } } } }
private static FILEHEADER HeaderFromReader(BinaryReader reader) { FILEHEADER result = new FILEHEADER(); result.FileSignature = Encoding.UTF8.GetChars(reader.ReadBytes(4)); result.FileSourceID = reader.ReadUInt16(); result.GlobalEncoding = reader.ReadUInt16(); result.PIDData1 = reader.ReadUInt32(); result.PIDData2 = reader.ReadUInt16(); result.PIDData3 = reader.ReadUInt16(); result.PIDData4 = reader.ReadBytes(8); result.VersionMajor = reader.ReadByte(); result.VersionMinor = reader.ReadByte(); result.SystemIdentifier = Encoding.UTF8.GetChars(reader.ReadBytes(32)); result.GeneratingSoftware = Encoding.UTF8.GetChars(reader.ReadBytes(32)); result.FileCreationDayofYear = reader.ReadUInt16(); result.FileCreationYear = reader.ReadUInt16(); result.HeaderSize = reader.ReadUInt16(); result.OffsetToPointData = reader.ReadUInt32(); result.NumberOfVariableLengthRecords = reader.ReadUInt32(); result.PointDataRecFormat = reader.ReadByte(); result.PointDataRecLength = reader.ReadUInt16(); result.LegacyNumberOfPointRecs = reader.ReadUInt32(); result.LegacyNumberOfPointByReturn = reader.ReadBytes(20); result.XScaleFactor = reader.ReadDouble(); result.YScaleFactor = reader.ReadDouble(); result.ZScaleFactor = reader.ReadDouble(); result.XOffset = reader.ReadDouble(); result.YOffset = reader.ReadDouble(); result.ZOffset = reader.ReadDouble(); result.MaxX = reader.ReadDouble(); result.MaxY = reader.ReadDouble(); result.MaxZ = reader.ReadDouble(); result.MinX = reader.ReadDouble(); result.MinY = reader.ReadDouble(); result.MinZ = reader.ReadDouble(); result.StartOfWaveformDataPacketRec = reader.ReadUInt64(); result.StartOfFirstExtdVariableLenRec = reader.ReadUInt64(); result.NumberOfExtdVariableLengthRecs = reader.ReadUInt32(); result.NumberOfPointRecs = reader.ReadUInt64(); result.NumberOfPointsByReturn = reader.ReadBytes(120); return(result); }