نمایش نتایج 1 تا 3 از 3

نام تاپیک: آموزش فشرده سازی با استفاده از کتابخانه NET Zip Library

  1. #1
    کاربر دائمی آواتار ایمان مدائنی
    تاریخ عضویت
    آذر 1386
    محل زندگی
    تهران
    پست
    1,463

    Post آموزش فشرده سازی با استفاده از کتابخانه NET Zip Library

    سلام دوستان

    امروز براتون آموزش فشرده سازی فایل و دایرکتوری ها با استفاده از کتابخانه Dot Net Zip Library آماده کردم

    البته نمونه هم کنارش گذاشتم تا بتونید کاملا یاد بگیرید

    خب شروع میکنیم

    در مرحله اول Dll یا همون کتابخانه ICSharpCode.SharpZipLib.dll رو به پروژه اضافه می کنیم

    بعد باید فضای نام اون رو اضافه کنیم

    using ICSharpCode.SharpZipLib.Zip;

    در مرحله بعد من کد هارو در رویداد کلیک یک Button نوشتم یعنی زمانی که کلیک زده میشه یک FolderBrowserDialog و از کاربر میخواد تا دایرکتوریه مورد نظر رو جهت فشرده سازی انتخاب کنه

    private void button2_Click(object sender, EventArgs e)
    {
    FolderBrowserDialog op = new FolderBrowserDialog();
    if (op.ShowDialog() == DialogResult.OK)
    {
    // انتخاب پوشه مورد نظر جهت فشرده سازی
    string[] aFilenames = Directory.GetFiles(op.SelectedPath);
    // the name of the Zip File is the second Parameter passed in calling
    ZipOutputStream s = new ZipOutputStream(File.Create(Application.StartupPat h+@"\my.zip"));
    // Set compression level: 0 [none] - 9 [highest]
    s.SetLevel(5);
    for (int i = 0; i < aFilenames.Length; i++)
    {
    FileStream fs = File.OpenRead(aFilenames[i]);
    // normally, the Buffer is allocated once,
    // here we do it once per File for clarity's sake
    byte[] buffer = new byte[fs.Length];
    fs.Read(buffer, 0, buffer.Length);
    // and now we write a ZipEntry & the Data
    ZipEntry entry = new ZipEntry(aFilenames[i]);
    s.PutNextEntry(entry);
    s.Write(buffer, 0, buffer.Length);
    }
    s.Finish();
    s.Close();
    MessageBox.Show("فشرده سازی با موفقیت انجام شد");
    }
    }

    }

    خب حالا به بررسی قسمت ها کد میپردازیم :

    FolderBrowserDialog op = new FolderBrowserDialog();
    if (op.ShowDialog() == DialogResult.OK)
    {

    در اینجا چک کردیم که اگه کاربر مسیری رو انتخاب کرده بود کدها اجرا بشه

    string[] aFilenames = Directory.GetFiles(op.SelectedPath);

    در قسمت بالا فایل های موجود در مسیر را خوانده و در یک آرایه قرار دادیم که برای کار کردن با فایلها از فضای نام زیر استفاده کردیم

    using System.IO;

    قسمت بعدی :

    ZipOutputStream s = new ZipOutputStream(File.Create(Application.StartupPat h+@"\my.zip"));

    در این قسمت محل ذخیره فایل فشرده تعیین می شود که ما اون رو کنار پروژه قرار دادیم با نام My.Zip

    // Set compression level: 0 [none] - 9 [highest]
    s.SetLevel(5);



    در قسمت بالا نوع فشرده سازی تعیین میشه که از 0 تا 9 قایل انتخاب می باشد

    و بقیه کد ها هم تک تک فایلها رو از مسیر خونده با استفاده از یک حلقه و ذخیره میکند



    امیدوارم خوشتون اومده باشه

    البته این کتابخانه قابلیت رمز گذاری روی فایل فشرده رو هم داره و کلی امکانات دیگر

    s.Password = "123";

    نمونه پروژه آموزش داده شده هم ضمیمه می باشد

    موفق و پیروز باشید

    منبع مقاله Madaeny.com
    فایل های ضمیمه فایل های ضمیمه
    آخرین ویرایش به وسیله ایمان مدائنی : یک شنبه 29 اردیبهشت 1392 در 17:54 عصر

  2. #2
    کاربر دائمی
    تاریخ عضویت
    مرداد 1388
    محل زندگی
    کنار یه ساحل خیلی زیبا
    پست
    922

    نقل قول: آموزش فشرده سازی با استفاده از کتابخانه NET Zip Library

    با سلام و این هم نحو ه استرکت فایل های زیپ با همین کتابخانه
    متد استرکت فایل های زیپ

    public static void UnZipFiles(string zipPathAndFile, string outputFolder, bool deleteZipFile)
    {
    ZipInputStream s = new ZipInputStream(File.OpenRead(zipPathAndFile));
    ZipEntry theEntry;
    string tmpEntry = String.Empty;
    while ((theEntry = s.GetNextEntry()) != null)
    {
    string directoryName = outputFolder;
    string fileName = Path.GetFileName(theEntry.Name);
    // create directory
    if (directoryName != "")
    {
    Directory.CreateDirectory(directoryName);
    }
    if (fileName != String.Empty)
    {
    if (theEntry.Name.IndexOf(".ini") < 0)
    {
    string fullPath = directoryName + "\\" + theEntry.Name;
    fullPath = fullPath.Replace("\\ ", "\\");
    string fullDirPath = Path.GetDirectoryName(fullPath);
    if (!Directory.Exists(fullDirPath)) Directory.CreateDirectory(fullDirPath);
    FileStream streamWriter = File.Create(fullPath);
    int size = 2048;
    byte[] data = new byte[2048];
    while (true)
    {
    size = s.Read(data, 0, data.Length);
    if (size > 0)
    {
    streamWriter.Write(data, 0, size);
    }
    else
    {
    break;
    }
    }
    streamWriter.Close();
    }
    }
    }
    s.Close();
    if (deleteZipFile)
    File.Delete(zipPathAndFile);
    }


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

    private void button1_Click(object sender, EventArgs e)
    {

    FileDialog fd= new OpenFileDialog();
    fd.Filter = "zipfiles(*.zip)|*.zip";
    if (fd.ShowDialog()==DialogResult.OK)
    {
    string pathunzip;
    FileInfo fi= new FileInfo(fd.FileName);
    pathunzip = fi.Directory.ToString();
    UnZipFiles(fd.FileName, pathunzip, false);
    MessageBox.Show("ok unzip!!!!!!!");

    }


    }

    موفق باشین

  3. #3
    کاربر دائمی آواتار vahid2112
    تاریخ عضویت
    آبان 1391
    محل زندگی
    زیر گنبد کبود
    پست
    294

    نقل قول: آموزش فشرده سازی با استفاده از کتابخانه NET Zip Library

    سلام
    چند تا عیب داره:
    1.اینه که تمامی فولدرهای پدر مربوط به پوشه انتخابی رو تا اول درایو جز زیپ میکنه
    2.اگه پوشه انتخابی دارای فولدر باشه اونها رو زیپ نمیکنه!

    امکان اصلاحش هست؟؟

تاپیک های مشابه

  1. آموزش ساخت plug in با استفاده از Vb.net and C#‎.net
    نوشته شده توسط ghafoori در بخش مقالات مرتبط با Microsoft .Net Framework
    پاسخ: 26
    آخرین پست: شنبه 27 اردیبهشت 1393, 13:55 عصر
  2. اصل مهم - فشرده سازی صفحات وب در ASP.NET 2.0
    نوشته شده توسط Behrouz_Rad در بخش مقالات مرتبط با Microsoft .Net Framework
    پاسخ: 75
    آخرین پست: سه شنبه 27 فروردین 1387, 08:26 صبح
  3. مشکل به هنگام استفاده از قابلیت فشرده سازی صفحات وب
    نوشته شده توسط پدرخوانده در بخش PHP
    پاسخ: 6
    آخرین پست: چهارشنبه 17 آبان 1385, 09:21 صبح
  4. امکان فشرده سازی داده ها در ASP.NET 1.1
    نوشته شده توسط مسعود حیدرنیا در بخش ASP.NET Web Forms
    پاسخ: 0
    آخرین پست: دوشنبه 15 آبان 1385, 10:05 صبح

قوانین ایجاد تاپیک در تالار

  • شما نمی توانید تاپیک جدید ایجاد کنید
  • شما نمی توانید به تاپیک ها پاسخ دهید
  • شما نمی توانید ضمیمه ارسال کنید
  • شما نمی توانید پاسخ هایتان را ویرایش کنید
  •