public override void WriteVcsToRaw(string vcsdir, Stream zipEntryStream) { //zip up the header bytes //using (var stream = new MemoryStream()) // using (var stream = zipEntry.Open()) using (var writer = new BinaryWriter(zipEntryStream)) { using (var zipStream = new MemoryStream()) { using (var mashupZipArchive = new ZipArchive(zipStream, ZipArchiveMode.Create, true)) { var order = _fileSystem.File.ReadAllLines(Path.Combine(vcsdir, ".zo")); foreach (var name in order) { var converter = FindConverter(name); var mashupZipEntry = mashupZipArchive.CreateEntry(name.Replace('/', '\\'), CompressionLevel.Optimal); using (var mashupStream = mashupZipEntry.Open()) { converter.WriteVcsToRaw(Path.Combine(vcsdir, name.Replace('/', '\\')), mashupStream); } } } //Write header writer.Write(new byte[] { 0x00, 0x00, 0x00, 0x00 }); //write zip zipStream.Flush(); zipStream.Seek(0, SeekOrigin.Begin); writer.Write((int)zipStream.Length); zipStream.WriteTo(zipEntryStream); } using (var xmlStream1 = new MemoryStream()) { using (var file = _fileSystem.File.Open(Path.Combine(vcsdir, "3.xml"), FileMode.Open)) { var xmlb = new XMLConverter(new UTF8Encoding(true), _fileSystem, false).VcsToRaw(file); //xmlb.Length xmlb.Seek(0, SeekOrigin.Begin); xmlb.CopyTo(xmlStream1); xmlStream1.Seek(0, SeekOrigin.Begin); } writer.Write((int)xmlStream1.Length); writer.Write(xmlStream1.ToArray()); } using (var xmlStream2 = new MemoryStream()) { using (var file = _fileSystem.File.Open(Path.Combine(vcsdir, "6.xml"), FileMode.Open)) { using (var xmlb = new XMLConverter(new UTF8Encoding(false), _fileSystem, false).VcsToRaw(file)) { xmlb.CopyTo(xmlStream2); } } writer.Write((int)xmlStream2.Length + 34); writer.Write(new byte[] { 0x00, 0x00, 0x00, 0x00 }); writer.Write(xmlStream2.ToArray()); } new NoopConverter(_fileSystem).WriteVcsToRaw(Path.Combine(vcsdir, "7.bytes"), zipEntryStream); } }