Exemplo n.º 1
0
        /// <summary>
        /// Extract to specific directory, retaining filename
        /// </summary>
        public static void WriteEntryToDirectory(this IReader reader, string destinationDirectory,
                                                 ExtractionOptions options = null)
        {
            string destinationFileName = string.Empty;
            string file = Path.GetFileName(reader.Entry.Key);

            options = options ?? new ExtractionOptions()
            {
                Overwrite = true
            };

            if (options.ExtractFullPath)
            {
                string folder  = Path.GetDirectoryName(reader.Entry.Key);
                string destdir = Path.Combine(destinationDirectory, folder);
                if (!Directory.Exists(destdir))
                {
                    Directory.CreateDirectory(destdir);
                }
                destinationFileName = Path.Combine(destdir, file);
            }
            else
            {
                destinationFileName = Path.Combine(destinationDirectory, file);
            }

            if (!reader.Entry.IsDirectory)
            {
                reader.WriteEntryToFile(destinationFileName, options);
            }
            else if (options.ExtractFullPath && !Directory.Exists(destinationFileName))
            {
                Directory.CreateDirectory(destinationFileName);
            }
        }
Exemplo n.º 2
0
 /// <summary>
 /// Extract all remaining unread entries to specific directory, retaining filename
 /// </summary>
 public static void WriteAllToDirectory(this IReader reader, string destinationDirectory,
                                        ExtractionOptions options = null)
 {
     while (reader.MoveToNextEntry())
     {
         reader.WriteEntryToDirectory(destinationDirectory, options);
     }
 }
Exemplo n.º 3
0
 /// <summary>
 /// Extract to specific file
 /// </summary>
 public static void WriteEntryToFile(this IReader reader, string destinationFileName,
                                     ExtractionOptions options = null)
 {
     ExtractionMethods.WriteEntryToFile(reader.Entry, destinationFileName, options,
                                        (x, fm) =>
     {
         using (FileStream fs = File.Open(destinationFileName, fm))
         {
             reader.WriteEntryTo(fs);
         }
     });
 }
Exemplo n.º 4
0
        /// <summary>
        /// Extract to specific file
        /// </summary>
        public static void WriteEntryToFile(this IReader reader, string destinationFileName,
                                            ExtractionOptions options = null)
        {
            FileMode fm = FileMode.Create;

            options = options ?? new ExtractionOptions()
            {
                Overwrite = true
            };

            if (!options.Overwrite)
            {
                fm = FileMode.CreateNew;
            }
            using (FileStream fs = File.Open(destinationFileName, fm))
            {
                reader.WriteEntryTo(fs);
            }
            reader.Entry.PreserveExtractionOptions(destinationFileName, options);
        }
 /// <summary>
 /// Extract to specific directory, retaining filename
 /// </summary>
 public static void WriteEntryToDirectory(this IReader reader, string destinationDirectory,
                                          ExtractionOptions options = null)
 {
     ExtractionMethods.WriteEntryToDirectory(reader.Entry, destinationDirectory, options,
                                             reader.WriteEntryToFile);
 }