در توسینسو تدریس کنید

و

با دانش خود درآمد کسب کنید

کار با فایل های zip در زبان سی شارپ

یکی از قابلیت هایی که به صورت پیش فرض در زبان سی شارپ وجود دارد، قابلیت ایجاد فایل های فشرده zip است. یعنی شما می توانید یک یا چندین فایل را فشرده کرده و در صورت نیاز یک فایل zip را extract کنید. در این مطلب می خواهیم با نحوه ایجاد فایل های zip و همچنین extract کردن آن ها در زبان سی شارپ آشنا شویم. در دات نت فضای نامی وجود دارد به نام System.IO.Compression که کلاس های مورد نیاز برای کار با فایل های zip در این فضای نام قرار گرفته است. مهمترین کلاس های این فضای نام، کلاس های زیر هستند:

  1. ZipFile: از این کلاس برای فشرده سازی محتویات یک پوشه و همچنین Extract کردن یک فایل zip می توان استفاده کرد.
  2. ZipArchive: از این کلاس برای خواندن محتویات یک فایل zip استفاده می شود و می توان در کد به آیتم های موجود در یک فایل zip دسترسی داشت
  3. ZipArchiveEntry: زمان استفاده از کلاس ZipArchive از این کلاس برای دسترسی به آیتم های یک فایل zip استفاده می شود
  4. DeflateStream و GZipStream: از این کلاس ها برای ایجاد فایل های فشرده و همچنین خواندن فایل های فشرده استفاده می شود. کلاس ZipFile از این کلاس ها در پشت زمینه استفاده می کند و در حقیقت کار با این کلاس ها توسط کلاس ZipFile راحت تر شده است.

در صورتی که سه کلاس ابتدایی لیست بالا در فضای نام System.IO.Compression وجود نداشتند می بایست به صورت دستی Reference های System.IO.Compression و System.IO.Compression.File را به پروژه اضافه کنید.

در مثال زیر، بوسیله کلاس ZipFile عملیات فشرده سازی و همچنین باز کردن یک فایل Zip را مشاهده می کنید:

using System;
using System.IO;
using System.IO.Compression;

namespace ConsoleApplication
{
    class Program
    {
        static void Main(string[] args)
        {
            string folderToZip = @"c:\my\foldertozip";
            string zipPath = @"c:\my\result.zip";
            string extractPath = @"c:\my\extract";

            ZipFile.CreateFromDirectory(folderToZip, zipPath);

            ZipFile.ExtractToDirectory(zipPath, extractPath);
        }
    }
}

همانطور که در کد بالا ملاحظه می کنید، متد CreateFromDirectory در کلاس ZipFile برای ایجاد یک فایل zip از روی یک پوشه استفاده شده و همچنین متد ExtractToDirectory برای باز کردن یک فایل zip در یک پوشه استفاده می شود.

اما بعضی اوقات نیاز است که یک فایل zip را باز کرده و آیتم های داخل آن را پردازش کنیم، بوسیله کلاس های ZipArchive و ZipArchiveEntry به صورت زیر می توان این کار را انجام داد:

using System;
using System.IO;
using System.IO.Compression;

namespace ConsoleApplication1
{
    class Program
    {
        static void Main(string[] args)
        {
            string zipPath = @"c:\my\start.zip";
            string extractPath = @"c:\my\extract";

            using (ZipArchive archive = ZipFile.OpenRead(zipPath))
            {
                foreach (ZipArchiveEntry entry in archive.Entries)
                {
                    if (entry.FullName.EndsWith(".txt", StringComparison.OrdinalIgnoreCase))
                    {
                        entry.ExtractToFile(Path.Combine(extractPath, entry.FullName));
                    }
                }
            } 
        }
    }
}

همانطور که در کد بالا مشاهده می کنید، بوسیله متد OpenRead در کلاس ZipFile، ابتدا فایل zip مورد نظر را باز کرده و سپس بوسیله خصوصیت Entries که در کلاس ZipArchive تعریف شده توانستیم به آیتم های موجود در فایل zip دسترسی داشته باشیم. در کد بالا و بوسیله خصوصیت FullName چک می کنیم که اگر پسوند فایل txt بود، فایل را extract کند. کلاس ZipArchive بیشتر در مواقعی به کار می آید که قصد داریم آیتم های یک فایل zip را به صورت موردی پردازش یا extract کنیم.

امیدوارم که این مطلب مورد توجه دوستان عزیز قرار گرفته باشد. ITPRO باشید

نویسنده: حسین احمدی

منبع: ITPRO

#ایجاد_فایل_zip_در_سی_شارپ #فشرده_سازی_فایل_ها_در_سی_شارپ #کار_با_فایل_های_zip_در_سی_شارپ
0 نظر

هیچ نظری ارسال نشده است! اولین نظر برای این مطلب را شما ارسال کنید...

نظر شما
برای ارسال نظر باید وارد شوید.
از سرتاسر توسینسو
تنظیمات حریم خصوصی
تائید صرفنظر
×

تو می تونی بهترین نتیجه رو تضمینی با بهترین های ایران بدست بیاری ، پس مقایسه کن و بعد خرید کن : فقط توی جشنواره تابستانه می تونی امروز ارزونتر از فردا خرید کنی ....