private void OpenAllSaves() { if (SaveDir == null) { return; } string[] files = Fs.GetFileSystemEntries(SaveDir, "*"); foreach (string file in files) { Savefile.Savefile save = null; string saveName = Path.GetFileNameWithoutExtension(file); try { Stream stream = Fs.OpenFile(file, FileMode.Open); string sdPath = "/" + Util.GetRelativePath(file, SaveDir).Replace('\\', '/'); var nax0 = new Nax0(Keyset, stream, sdPath, false); save = new Savefile.Savefile(Keyset, nax0.Stream, false); } catch (Exception ex) { Console.WriteLine($"{ex.Message} File: {file}"); } if (save != null && saveName != null) { Saves[saveName] = save; } } }
public static void Extract(this Savefile save, string outDir, IProgressReport logger = null) { foreach (FileEntry file in save.Files) { Stream stream = save.OpenFile(file); string outName = outDir + file.FullPath; string dir = Path.GetDirectoryName(outName); if (!string.IsNullOrWhiteSpace(dir)) { Directory.CreateDirectory(dir); } using (var outFile = new FileStream(outName, FileMode.Create, FileAccess.ReadWrite)) { logger?.LogMessage(file.FullPath); stream.CopyStream(outFile, stream.Length, logger); } } }