public void SavePakFile(string path) { using (var inputFileStream = File.Open(LoadedFilePath, FileMode.Open)) { using (var reader = new PakBinaryReader(inputFileStream)) { using (var outputFileStream = File.Open(path, FileMode.Create)) { using (var writer = new PakBinaryWriter(outputFileStream)) { long currentSize = 0; long totalSize = Model.Archive.Directory.Entries.Sum(_ => _.UncompressedSize); for (var i = 0; i < Model.Archive.Directory.Entries.Count; i++) { var entry = Model.Archive.Directory.Entries[i]; Model.SaveDataEntry(reader, writer, entry, Padding && i + 1 != Model.Archive.Directory.Entries.Count); CurrentProgress = (int)(currentSize * 100.0 / totalSize); CurrentFile = entry.Name; currentSize += entry.UncompressedSize; } Model.SavePakFileStructure(writer); } } } } OnPropertyChanged("Model"); }
public void CreateNewPak(string directory, string targetPath) { var entries = new List <PakEntry>(); foreach (string file in Directory.GetFiles(directory, "*", SearchOption.AllDirectories)) { string[] tokens = file.Split(new string[] { directory + @"\" }, StringSplitOptions.RemoveEmptyEntries); foreach (string token in tokens) { if (!string.IsNullOrWhiteSpace(token)) { string result = token.Replace(@"\", @"/"); var currentEntry = new PakEntry { Name = result, Import = file, UncompressedSize = new FileInfo(file).Length, CompressedSize = new FileInfo(file).Length, CompressionType = 0, EncryptionType = 0, }; entries.Add(currentEntry); } } } Model.CreateNewPakFile(MountPoint, entries, Version); using (var outputFileStream = File.Open(targetPath, FileMode.Create)) { using (var writer = new PakBinaryWriter(outputFileStream)) { long currentSize = 0; long totalSize = Model.Archive.Directory.Entries.Sum(_ => _.UncompressedSize); for (var i = 0; i < Model.Archive.Directory.Entries.Count; i++) { var entry = Model.Archive.Directory.Entries[i]; Model.CreateDataEntry(writer, entry, Padding && i + 1 != Model.Archive.Directory.Entries.Count); CurrentProgress = (int)(currentSize * 100.0 / totalSize); CurrentFile = entry.Name; currentSize += entry.UncompressedSize; } Model.SavePakFileStructure(writer); } } }