Example #1
0
    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);
    }