public Stream OpenStream(PackedArchiveFileRecord record) { if (record.Size == 0) { //CreateViewStream interprets size = 0 as "whole file" so I can't use it for empty files return(Stream.Null); } return(map.CreateViewStream(payloadOffset + record.Offset, record.Size, MemoryMappedFileAccess.Read)); }
private void WriteFile(MemoryMappedFile archiveMap, long payloadOffset, PackedArchiveFileRecord fileRecord, FileInfo file) { Console.WriteLine("packing " + file.Name + "..."); long offset = payloadOffset + fileRecord.Offset; long size = fileRecord.Size; using (var sourceStream = file.OpenRead()) { using (var destStream = archiveMap.CreateViewStream(offset, size)) { sourceStream.CopyTo(destStream); } } }
public PackedArchiveFile(PackedArchive archive, PackedArchiveFileRecord record) { this.archive = archive; this.record = record; }
public MemoryMappedViewAccessor OpenAccessor(PackedArchiveFileRecord record) { return(map.CreateViewAccessor(payloadOffset + record.Offset, record.Size, MemoryMappedFileAccess.Read)); }