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"); }
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"); }