예제 #1
0
        public void SaveStructureByRepack(string path)
        {
            using (var reader = new RpkgBinaryReader(GetRpkgVersion(LoadedFilePath), File.Open(LoadedFilePath, FileMode.Open)))
            {
                using (var writer = new RpkgBinaryWriter(GetRpkgVersion(path), File.Open(path, FileMode.Create)))
                {
                    Model.SaveOriginalRpkgFileStructure(writer);

                    long currentSize = 0;
                    long totalSize   = Model.Archive.Entries.Sum(_ => _.CompressedSize);

                    foreach (var entry in Model.Archive.Entries)
                    {
                        Model.SaveDataEntry(reader, writer, entry);
                        CurrentProgress = (int)(currentSize * 100.0 / totalSize);
                        CurrentFile     = entry.Hash.ToString();
                        currentSize    += entry.CompressedSize;
                    }

                    Model.UpdateSavedRpkgFileStructure(writer);
                }
            }

            OnPropertyChanged("Model");
        }
예제 #2
0
        public void SaveStructureByAppend()
        {
            using (var file = File.Open(LoadedFilePath, FileMode.Open, FileAccess.ReadWrite))
                using (var writer = new RpkgBinaryWriter(GetRpkgVersion(LoadedFilePath), file))
                {
                    long currentSize = 0;
                    var  entries     = Model.Archive.Entries.Where(_ => _.Import != null || _.ImportRawData != null).ToList();
                    long totalSize   = entries.Sum(_ => _.Info.DecompressedDataSize);

                    foreach (var entry in entries)
                    {
                        Model.AppendDataEntry(writer, entry);
                        CurrentProgress = (int)(currentSize * 100.0 / totalSize);
                        CurrentFile     = entry.Hash.ToString();
                        currentSize    += entry.Info.DecompressedDataSize;
                    }

                    Model.UpdateSavedRpkgFileStructure(writer);
                }

            OnPropertyChanged("Model");
        }