Пример #1
0
        public void Extract()
        {
            if (_leafs.Length == 0)
            {
                return;
            }

            String root = InteractionService.WorkingLocation.Provide().ProvideExtractedDirectory();

            byte[] buff = new byte[32 * 1024];
            foreach (ArchiveEntry entry in _leafs)
            {
                String targetExtension;
                IArchiveEntryExtractor extractor = GetExtractor(entry, out targetExtension);
                if (extractor == null)
                {
                    continue;
                }

                String targetPath    = Path.Combine(root, PathEx.ChangeMultiDotExtension(entry.Name, targetExtension));
                String directoryPath = Path.GetDirectoryName(targetPath);
                _target.CreateDirectory(directoryPath);

                using (Stream input = _listing.Accessor.ExtractBinary(entry))
                    using (StreamSequence output = _target.Create(targetPath))
                        extractor.Extract(entry, output, input, buff);
            }
        }
Пример #2
0
        public void Extract()
        {
            if (_leafs.Length == 0)
            {
                return;
            }

            String root            = InteractionService.WorkingLocation.Provide().ProvideExtractedDirectory();
            String targetDirectory = Path.Combine(root, _listing.ExtractionSubpath);

            _target.CreateDirectory(targetDirectory);

            byte[] buff = new byte[32 * 1024];
            foreach (WpdEntry entry in _leafs)
            {
                String             targetExtension;
                IWpdEntryExtractor extractor = GetExtractor(entry, out targetExtension);
                if (extractor == null)
                {
                    return;
                }

                String targetPath = Path.Combine(targetDirectory, entry.NameWithoutExtension + '.' + targetExtension);
                using (Stream output = _target.Create(targetPath))
                    extractor.Extract(entry, output, _headers, _content, buff);
            }
        }
Пример #3
0
        public void Extract()
        {
            if (_leafs.Length == 0)
            {
                return;
            }

            String movieDirectory = InteractionService.GameLocation.Provide().MovieDirectory;
            String packagePostfix = _listing.PackagePostfix;

            String root            = InteractionService.WorkingLocation.Provide().ProvideExtractedDirectory();
            String targetDirectory = Path.Combine(root, _listing.ExtractionSubpath);

            _target.CreateDirectory(targetDirectory);

            byte[] buff = new byte[32 * 1024];
            foreach (WdbMovieEntry entry in _leafs)
            {
                String targetExtension;
                IWdbMovieEntryExtractor extractor = GetExtractor(entry, out targetExtension);
                if (extractor == null)
                {
                    return;
                }

                String packageDirectory = Path.Combine(targetDirectory, entry.PackageName);
                Directory.CreateDirectory(packageDirectory);

                String sourcePath = Path.Combine(movieDirectory, entry.PackageName + packagePostfix + ".win32.wmp");
                String targetPath = Path.Combine(packageDirectory, entry.Entry.NameWithoutExtension + '.' + targetExtension);
                using (Stream input = File.OpenRead(sourcePath))
                    using (Stream output = _target.Create(targetPath))
                        extractor.Extract(entry, output, input, buff);
            }
        }