Ejemplo n.º 1
0
        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);
                }
            }
        }
Ejemplo n.º 2
0
        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);
                }
            }
        }
Ejemplo n.º 3
0
        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);
                }
            }
        }