۷Zip با سی شارپ
با سلام خدمت همراهان گرامی صفر تا قهرمان!
در این قسمت از سری آموزش های سی شارپ، قصد داریم یک برنامه فشرده ساز برای انواع فایل ها بنویسیم. الگوریتم های بسیاری برای فشرده سازی معرفی شده اند که الگوریتم LZMA یکی از معروف ترین ها است و همچنان کاربرد دارد. SDK این الگوریتم از اینجا قابل دریافت است. این SDK برای بیشتر زبان های برنامه نویسی مانند جاوا، سی پلاس پلاس و سی شارپ وجود دارد. با مطالعه این کدها میتوان به نحوه کار این الگوریتم پی برد. همچنین میتوان آن ها را در برنامه های خود وارد و از کتابخانه ها و کلاس های آن استفاده کنید.
ما برای ساخت این برنامه، از کتابخانه dll این الگوریتم استفاده خواهیم کرد. فایل ۷zip.dll را دانلود کنید و در قسمت solution Explorer با چپ کلیک بر روی add refrence آن را به پروژه اضافه کنید. همچنین در هنگام دانلود، به ۳۲ بیتی یا ۶۴ بیتی بودن آن توجه کنید. در قسمت معرفی کتابخانه ها، دستور زیر را وارد کنید.
using SevenZip;
در طراحی ظاهر برنامه اختیار عمل با شماست. من در این پروژه، از چند دکمه و یک Tab استفاده کردم. من کدهای لازم برای هر قسمت را توضیح میدهم و شما میتوانید با توجه به ظاهر برنامه خود، کدها را در دکمه مربوط قرار دهید.
برای فشرده سازی، ابتدا لازم است که، آدرس کتابخانه (جایی که فایل dll روی سیستم شما ذخیره شده است) را با کمک متد setlibrarypath معرفی کنید. سپس یک شئ از کلاس sevenzipCompressor میسازیم. صفت ArchiveFormat نشان دهنده پسوند فایل خروجی است. با کمک یک Enum به نام OutArchiveFormat میتوان فرمت های مختلفی از قبیل ۷zip، Tar، Gzip و … را برای فایل خروجی در نظر کرفت. میزان فشرده سازی را میتوان با تنظیم صفت CompressionLevel با Enum ای به همین نام مشخص کرد. با کمک متد CompressDirectory که آرگومان های آن، نام فایل ورودی و نام فایل خروجی است، کار فشرده سازی را به پایان میبریم.
private void btnCompression_Click(object sender, EventArgs e) { SevenZipCompressor.SetLibraryPath(Application.StartupPath + "\\7z.dll"); SevenZipCompressor tmp = new SevenZipCompressor(); tmp.ArchiveFormat = OutArchiveFormat.SevenZip; tmp.CompressionLevel = CompressionLevel.Ultra; tmp.CompressDirectory(txtCompressDirectory.Text, txtCompressOutput.Text); MessageBox.Show("Compression Finished ..."); }
برای استخراج، کافی است ابتدا مسیر کتابخانه را همانند بخش فشرده سازی به برنامه اضافه کنیم. سپس یک شئ از کلاس SevenzipExtractor ساخته و نام فایل فشرده را به آن بدهیم. در نهایت با متد ExtractArchive فایل را از حالت فشرده خارج میکنیم.
private void btnExtraction_Click(object sender, EventArgs e) { SevenZipExtractor.SetLibraryPath(Application.StartupPath + "\\7z.dll"); using (SevenZipExtractor tmp = new SevenZipExtractor(txtExtractArchive.Text)) { tmp.ExtractArchive(txtExtractDirectory.Text); } MessageBox.Show("Extraction Finished ..."); }
دیدگاهتان را بنویسید
برای نوشتن دیدگاه باید وارد بشوید.