آرشیوهایی مانند ZIP، RAR، TAR، GZIP، BZIP2 معمولاً برای ذخیره بیش از یک فایل و پوشه در یک ظرف واحد استفاده می‌شوند. یکی دیگر از دلایل اصلی آرشیو فایل ها کاهش حجم کل فایل با استفاده از الگوریتم های فشرده سازی است. درست مانند تجزیه و استخراج داده ها از اسناد با فرمت های مختلف فایل، می توانید با فایل های بایگانی نیز به همان روش رفتار کنید. شما می توانید متن، تصاویر و حتی ابرداده را از فایل هایی که در آرشیو فشرده شده اند استخراج کنید. در این مقاله، نحوه استخراج داده های آرشیو ZIP با استفاده از C# با برنامه های .NET را مورد بحث قرار خواهیم داد.

موضوعات زیر در زیر پوشش داده شده است:

NET API برای استخراج داده های فایل های ZIP

GroupDocs.Parser راه حل تجزیه اسناد را برای توسعه دهندگان فراهم می کند. من از [.NET API آن برای استخراج داده های فایل های ZIP 4 در نمونه های C# این مقاله استفاده خواهم کرد. API علاوه بر این امکان استخراج متن، تصاویر و ابرداده را از فهرست طولانی [فرمت‌های سند پشتیبانی شده5 مانند اسناد پردازش کلمه، ارائه‌ها، صفحات گسترده، ایمیل‌ها، پایگاه‌های داده، کتاب‌های الکترونیکی و بسیاری دیگر را فراهم می‌کند.

می توانید نصب کننده DLL یا MSI را از بخش دانلودها دانلود کنید یا با افزودن بسته آن به برنامه .NET خود از طریق NuGet API را نصب کنید.

PM> Install-Package GroupDocs.Parser

نحوه استخراج داده های فایل ZIP در C#

GroupDocs.Parser for .NET از استخراج داده ها از فرمت های فایل فشرده سازی مختلف مانند ZIP، RAR، TAR، BZIP2 و GZIP پشتیبانی می کند. پس از بازیابی مجموعه فایل ها از فایل فشرده، می توانید هر نوع داده ای را از هر فایل استخراج کنید.

مراحل زیر نحوه استخراج داده های فایل های ZIP و بازیابی متن از هر فایل محصور شده در C# را نشان می دهد.

  • بایگانی ZIP را با استفاده از کلاس Parser بارگیری کنید.
  • پیوست ها را با استفاده از روش GetContainer دریافت کنید
  • از مجموعه پیوست ها عبور کنید.
  • برای هر پیوست، می‌توانید انواع مختلف داده‌های آن را با استفاده از روش‌های مربوطه کلاس Parser دریافت کنید.

کد منبع نحوه استخراج داده های فایل های ZIP با استفاده از C# را نشان می دهد. در این مثال، من کل متن را از تمام فایل های داخل آرشیو ZIP استخراج خواهم کرد.

// استخراج داده های آرشیو ZIP در سی شارپ
using (Parser parser = new Parser(@"path/sample.zip"))
{
    // ضمائم را از ظرف استخراج کنید
    IEnumerable<ContainerItem> attachments = parser.GetContainer();

    // تکرار بیش از مجموعه ای از موجودیت ها
    foreach (ContainerItem item in attachments)
    {
        // اطلاعات فایل را چاپ کنید
        Console.WriteLine("-----------------------------------");
        Console.WriteLine("Name: " + item.Name);
        Console.WriteLine("File Size: " + item.Size + " Bytes");
        Console.WriteLine("-----------------------------------");

        try
        {
            using (Parser attachmentParser = item.OpenParser())
            {
                // متن موجودیت ZIP را استخراج کنید
                using (TextReader reader = attachmentParser.GetText())
                {
                    Console.WriteLine(reader == null ? "No text" : reader.ReadToEnd());
                }
            }
        }
        catch (UnsupportedDocumentFormatException)
        {
            Console.WriteLine("Isn't supported.");
        }
    }
}

خروجی کد منبع بالا، متن بازیابی شده از یکی از فایل های PDF داخل فایل ZIP را نشان می دهد.

 -----------------------------------
 Name: sample.pdf
 File Size: 33370 Bytes
 -----------------------------------

 Heading

 This is the first paragraph of the sample document that contains some sample
 text, bulleted list, numbered list and more.

    •  Bullet Item 1
    •  Bullet Item 2
    •  Bullet Item 3
 
 This is the second paragraph of the sample document and after this, there is a
 numbered list: 

    1. Numbered Item 1
    2. Numbered Item 2
    3. Numbered Item 3 

مجوز API رایگان دریافت کنید

برای استفاده از API بدون محدودیت ارزیابی، می توانید یک مجوز موقت رایگان دریافت کنید.

نتیجه

به طور خلاصه، یاد گرفتید که چگونه داده های آرشیو ZIP را با استفاده از C# در برنامه .NET خود استخراج کنید. به طور خاص، اکنون می توانید داده ها را از فایل های ZIP، RAR، TAR، GZIP و BZIP استخراج کنید. شما حتی می توانید برنامه .NET استخراج داده خود را برای فایل های فشرده بسازید. برای جزئیات بیشتر یا یادگیری در مورد API، به [اسناد] مراجعه کنید. برای سؤالات، از طریق [فروم 13 با ما تماس بگیرید.

همچنین ببینید