internal static void ArchiveExtractFile(PSARC.Archive archive, Stream streamIn, string baseDir, string file) { CreateDirectory(baseDir, file); var filePath = Path.GetFullPath(Path.Combine(baseDir, file)); bool exists = File.Exists(filePath); FileMode fileMode = overwrite ? FileMode.Create : FileMode.CreateNew; using (var fOut = new FileStream(filePath, fileMode, FileAccess.Write)) { LogInfo($"extracting {file}"); archive.ExtractFile(file, fOut); if (exists) { LogOverwriteFile(filePath); } } }
internal static void ArchiveListFiles(string archiveFile) { using (var fIn = new FileStream(archiveFile, FileMode.Open, FileAccess.Read)) { var archive = new PSARC.Archive(fIn); int count = Math.Min(5, archive.filePaths.Count); for (int i = 0; i < count; i++) { var hash = System.Security.Cryptography.MD5.Create().ComputeHash(Encoding.ASCII.GetBytes(archive.filePaths[i])); Console.WriteLine(Utils.BytesToHex(hash)); } foreach (var path in archive.filePaths) { Console.WriteLine(path); } } }
internal static void ArchiveExtractFiles(string archiveFile, string baseDir, List <string> files) { using (var fIn = new FileStream(archiveFile, FileMode.Open, FileAccess.Read)) { var archive = new PSARC.Archive(fIn); // if no files were specified then extract all if (files.Count == 0) { foreach (var path in archive.filePaths) { files.Add(path); } } foreach (var file in files) { ArchiveExtractFile(archive, fIn, baseDir, file); } } }