示例#1
0
        private void DoRar_Entry_Stream(string filename)
        {
            using (Stream stream = File.OpenRead(Path.Combine(TEST_ARCHIVES_PATH, filename)))
                using (var reader = ReaderFactory.Open(stream))
                {
                    while (reader.MoveToNextEntry())
                    {
                        if (!reader.Entry.IsDirectory)
                        {
                            Assert.Equal(CompressionType.Rar, reader.Entry.CompressionType);
                            using (EntryStream entryStream = reader.OpenEntryStream())
                            {
                                string file    = Path.GetFileName(reader.Entry.Key);
                                string folder  = Path.GetDirectoryName(reader.Entry.Key);
                                string destdir = Path.Combine(SCRATCH_FILES_PATH, folder);
                                if (!Directory.Exists(destdir))
                                {
                                    Directory.CreateDirectory(destdir);
                                }
                                string destinationFileName = Path.Combine(destdir, file);

                                using (FileStream fs = File.OpenWrite(destinationFileName))
                                {
                                    entryStream.CopyTo(fs);
                                }
                            }
                        }
                    }
                }
            VerifyFiles();
        }