Exemplo n.º 1
0
        /// <summary>
        /// Extracts the Archive in a Folder.
        /// </summary>
        /// <param name="folder">The folder the archive should be extracted to.</param>
        public void Extract(string folder)
        {
            string fldr = Path.GetFullPath(folder);

            Console.WriteLine($"Extracting archive to folder: {fldr}");
            List <string> dirs = _archiveHeader.GetAllFolders().ToList();

            dirs.Sort(new StringLengthComparer());
            for (int i = 0; i < dirs.Count; i++)
            {
                string pp = ConvertToPath(dirs[i]);
                string p  = Path.Combine(fldr, pp);
                if (!Directory.Exists(p))
                {
                    Directory.CreateDirectory(p);
                }
            }

            Console.WriteLine($"Extracting files...");
            string[] files = _archiveHeader.GetChildren("", true);
            for (int i = 0; i < files.Length; i++)
            {
                if (files.Length < 100)
                {
                    Console.WriteLine($"Extracting file:" + files[i]);
                }
                else if (i % 50 == 0)
                {
                    Console.WriteLine($"Extracting files.. {i / (float)files.Length * 100}%");
                }
                string p = Path.Combine(fldr, ConvertToPath(files[i]));
                File.WriteAllBytes(p, ReadFile(files[i]));
            }
        }