public PackedArchive(FileInfo file) { map = file.OpenMemoryMappedFileForSharedRead(); long listingSize; using (var headerAccessor = map.CreateViewAccessor(0, HeaderSize, MemoryMappedFileAccess.Read)) { listingSize = headerAccessor.ReadInt64(0); payloadOffset = headerAccessor.ReadInt64(sizeof(long)); } PackedArchiveDirectoryRecord rootRecord; using (var listingStream = map.CreateViewStream(HeaderSize, listingSize, MemoryMappedFileAccess.Read)) { rootRecord = Persistance.Read <PackedArchiveDirectoryRecord>(listingStream); } root = new PackedArchiveDirectory(this, rootRecord); }