Пример #1
0
        public override void WriteVcsToRaw(string vcsdir, ZipArchive zipFile)
        {
            //zip up the header bytes
            var stream = new MemoryStream();
            var writer = new BinaryWriter(stream);

            var zipStream = new MemoryStream();

            using (var zip = new ZipArchive(zipStream, ZipArchiveMode.Create, true))
            {
                var order = _fileSystem.File.ReadAllLines(Path.Combine(vcsdir, ".zo"));
                foreach (var name in order)
                {
                    var converter = FindConverter(name);
                    converter.WriteVcsToRaw(Path.Combine(vcsdir, name.Replace('/', '\\')), zip);
                }
            }

            //Write header
            writer.Write(new byte[] { 0x00, 0x00, 0x00, 0x00 });

            //write zip
            zipStream.Flush();
            zipStream.Seek(0, SeekOrigin.Begin);
            zipStream.WriteTo(stream);

            using (var xmlStream1 = new MemoryStream())
            {
                using (var file = _fileSystem.File.Open(Path.Combine(vcsdir, "3.xml"), FileMode.Open))
                {
                    var xmlb = new XMLConverter(Encoding.UTF8, _fileSystem).VcsToRaw(file);
                    xmlb.CopyTo(xmlStream1);
                }

                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))
                {
                    var xmlb = new XMLConverter(Encoding.UTF8, _fileSystem).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"), zipFile);
        }
Пример #2
0
        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);
            }
        }