ایمان مدائنی
یک شنبه 29 اردیبهشت 1392, 17:25 عصر
سلام دوستان
امروز براتون آموزش فشرده سازی فایل و دایرکتوری ها با استفاده از کتابخانه 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 (http://www.madaeny.com/Article/533/)
امروز براتون آموزش فشرده سازی فایل و دایرکتوری ها با استفاده از کتابخانه 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 (http://www.madaeny.com/Article/533/)