Exemplo n.º 1
0
 /// <summary>
 /// Method to extract an embedded file
 /// </summary>
 /// <param name="format">Format of the embedded file</param>
 public void Extract(EmbeddedFormat format)
 {
     try
     {
         MemoryStream ms = GetFileStream();
         ArchiveFile  ex = new ArchiveFile(ms, SevenZipFormat.Zip);
         embeddedFiles = GetEntries(format, ref ex);
         currentModel.NumberOfFiles = embeddedFiles.Count;
         for (int i = 0; i < currentModel.NumberOfFiles; i++)
         {
             if (embeddedFiles[i].IsImage)
             {
                 embeddedFiles[i].CreateImage(true);
             }
             else if (embeddedFiles[i].IsXml)
             {
                 embeddedFiles[i].CreateXml();
             }
             else if (embeddedFiles[i].IsText)
             {
                 embeddedFiles[i].CreateText();
             }
             currentModel.CurrentFile = i + 1;
         }
     }
     catch (Exception e)
     {
         hasErrors = true;
         lastError = e.Message;
     }
 }
Exemplo n.º 2
0
        /// <summary>
        /// Method to get all embedded files as list according to the target image / file (format) type
        /// </summary>
        /// <param name="format">Target format</param>
        /// <param name="archive">Reference to the opened file (handled as archive)</param>
        /// <returns>A list of items</returns>
        private List <ExtractorItem> GetEntries(EmbeddedFormat format, ref ArchiveFile archive)
        {
            string extension = "";
            bool   allFiles  = false;

            switch (format)
            {
            case EmbeddedFormat.Emf:
                extension = ".emf";
                break;

            case EmbeddedFormat.Wmf:
                extension = ".wmf";
                break;

            case EmbeddedFormat.Png:
                extension = ".png";
                break;

            case EmbeddedFormat.Jpg:
                extension = ".jpg";
                break;

            case EmbeddedFormat.All:
                allFiles = true;
                break;
            }
            List <ExtractorItem> list = new List <ExtractorItem>();
            MemoryStream         ms;

            string[]      split;
            char[]        delimiter = new char[] { '\\', '/' };
            string        file, path;
            ExtractorItem item;

            for (int i = 0; i < archive.Entries.Count; i++)
            {
                if ((archive.Entries[i].IsFolder == false && archive.Entries[i].FileName.ToLower().EndsWith(extension)) || allFiles == true)
                {
                    ms = new MemoryStream();
                    archive.Entries[i].Extract(ms);
                    ms.Flush();
                    ms.Position = 0;
                    split       = archive.Entries[i].FileName.Split(delimiter);
                    file        = split[split.Length - 1];
                    path        = archive.Entries[i].FileName.Substring(0, archive.Entries[i].FileName.Length - file.Length);

                    item            = new ExtractorItem(file, ms, false, path);
                    item.Crc32      = archive.Entries[i].CRC;
                    item.FileSize   = (long)archive.Entries[i].Size;
                    item.LastChange = archive.Entries[i].LastWriteTime;
                    list.Add(item);
                }
            }
            return(list);
        }