Exemple #1
0
        private void ExtractISO_Directory(CDReader cd, string outputFolder, string cd_path)
        {
            var real_directory = string.Format("{0}/{1}", outputFolder, cd_path);

            if (!Directory.Exists(real_directory))
            {
                Directory.CreateDirectory(real_directory);
            }

            var cd_directories = cd.GetDirectories(cd_path);

            foreach (var cd_directory in cd_directories)
            {
                ExtractISO_Directory(cd, outputFolder, cd_directory);
            }

            var cd_files = cd.GetFiles(cd_path);

            foreach (var cd_file in cd_files)
            {
                var fileStream = cd.OpenFile(cd_file, FileMode.Open);

                var attributes = cd.GetAttributes(cd_file);


                var real_file = string.Format("{0}/{1}", outputFolder, cd_file);

                Log($"extracting {cd_file} to {real_file}");

                using (var writerStream = File.OpenWrite(real_file))
                {
                    var max_chunk = 1024;
                    var buffer    = new byte[max_chunk];

                    for (var b = 0; b < fileStream.Length; b += max_chunk)
                    {
                        var amount = (int)Math.Min(max_chunk, fileStream.Length - b);
                        fileStream.Read(buffer, 0, amount);
                        writerStream.Write(buffer, 0, amount);
                    }
                }

                fileStream.Dispose();
            }
        }