Exemple #1
0
        public Task Save(IFileSystem fileSystem, UPath savePath, SaveContext saveContext)
        {
            var fileStream = fileSystem.OpenFile(savePath, FileMode.Create, FileAccess.Write);

            _jarc.Save(fileStream, Files);

            return(Task.CompletedTask);
        }
Exemple #2
0
        public Task Save(IFileSystem fileSystem, UPath savePath, SaveContext saveContext)
        {
            var fileStream = fileSystem.OpenFile(savePath, FileMode.Create, FileAccess.Write);

            switch (_magic)
            {
            case "jARC":
                _jarc.Save(fileStream, Files);
                break;

            case "jCMP":
                _jcmp.Save(fileStream, Files);
                break;
            }

            return(Task.CompletedTask);
        }
Exemple #3
0
        public void Save(Stream output, IList <IArchiveFileInfo> files)
        {
            using var bw = new BinaryWriterX(output);

            // Calculate offsets
            var dataOffset = HeaderSize;

            // Save and compress jarc
            var jarcStream = new MemoryStream();

            _jarc.Save(jarcStream, files);
            jarcStream.Position = 0;

            output.Position = dataOffset;
            Compressions.ZLib.Build().Compress(jarcStream, output);

            // Write header
            _header.decompSize = (int)jarcStream.Length;
            _header.compSize   = (int)(output.Length - HeaderSize);
            _header.fileSize   = (int)output.Length;

            output.Position = 0;
            bw.WriteType(_header);
        }