PDA

View Full Version : اکسترکت کردن فایل Rar در سی شارپ



SajjadKhati
یک شنبه 20 تیر 1395, 20:08 عصر
سلام
توی سی شارپ چجوری میشه فایل Rar رو اکسترکت کرد؟ فایل zip منظورم نیست
یعنی کتابخونه و یا کلاس خوب برای این کار چیه؟
با Unrar.dll نتونیتم کار کنم (توی سی شارپ مبتدی ام) ولی یه dll دیگه گیر آوردم بنام NUnrar از اینجا که راحت تر بود :

https://nunrar.codeplex.com/

ولی هر چی گشتم نتونستم گزینه ای پیدا کنم که پسورد فایل rar (برای فایل های rar ای که پسورد دارن) رو بدم تا اکسترکت کنه و هر چی میگردم انگار نیست!! و دوم اینکه پروپرتی Entries در کلاس RarArchive ، کلاس RarArchiveEntry رو برمیگردونه . خوب در این صورت باید کد زیر درست باشه دیگه :



RarArchive myArchive = RarArchive.Open(@"C:\Users\SoomSaj\Desktop\New folder\01_Simulation&Export.rar");
RarArchiveEntry myEntery = myArchive.Entries;



ولی نمیدونم چرا اشتباه میگه هست!! باید حتما توی حلقه ی foreach بکار بره تا جواب بده! :



RarArchive myArchive = RarArchive.Open(@"C:\Users\SoomSaj\Desktop\New folder\01_Simulation&Export.rar");
foreach (RarArchiveEntry item in myArchive.Entries)
{
item.WriteToFile(@"C:\Users\SoomSaj\Desktop\New folder\extracted.wmv");
}



دلیل اینکه توی حلقه ی foreach باید حتما باشه تا جواب بده چیه؟
جواب سئوال قسمت پسورد شو میدونین؟ یا اینکه با کمپوننت یا dll دیگه ای کار کردین که این مشکل پسورد رو نداشته باشه و کار کردن باهاش هم سخت نباشه؟

mrprestige
یک شنبه 20 تیر 1395, 22:29 عصر
سلام دوست من وقتت بخیر ، دوست من شما میتونی بری از سایت NuGet و DotnetZip رو دانلود و نصب کنی و در محیط کدنویسی در قسمت using ها using Ionic.Zip رو اضافه کن ( هم فایل zip و هم فایل rar رو میخونه ) و برای zip یا rar کردن فایل موردنظرت اینو بنویس به عنوان مثال داخل منترل Buton این کد رو مینویسی

using (ZipFile zip = new ZipFile())
{
zip.AddDirectory(@"D:\Test");
zip.Save(@"D:\Test.zip");
/////// یا
zip.Save(@"D:\Test.rar");
}

و برای Extract کردن اون هم


using (ZipFile zip = ZipFile.Read(@"D:\test1.rar"))
{
foreach (var a in zip)
{
a.Extract(@"آدرس محلی که فایل ها درون اکسترکت میشن");
}
}


سوالی داشتی جواب میدم

SajjadKhati
یک شنبه 20 تیر 1395, 23:29 عصر
سلام دوست من وقتت بخیر ، دوست من شما میتونی بری از سایت NuGet و DotnetZip رو دانلود و نصب کنی و در محیط کدنویسی در قسمت using ها using Ionic.Zip رو اضافه کن ( هم فایل zip و هم فایل rar رو میخونه ) و برای zip یا rar کردن فایل موردنظرت اینو بنویس به عنوان مثال داخل منترل Buton این کد رو مینویسی

using (ZipFile zip = new ZipFile())
{
zip.AddDirectory(@"D:\Test");
zip.Save(@"D:\Test.zip");
/////// یا
zip.Save(@"D:\Test.rar");
}

و برای Extract کردن اون هم


using (ZipFile zip = ZipFile.Read(@"D:\test1.rar"))
{
foreach (var a in zip)
{
a.Extract(@"آدرس محلی که فایل ها درون اکسترکت میشن");
}
}


سوالی داشتی جواب میدم

ممنون
ولی این dll برای کار با فایل rar نیست . برای zip هست انگار . دانلود کردم و کد زیر رو همونطور که گفتی ، نوشتم :



using (ZipFile zip = ZipFile.Read(@"C:\Users\SoomSaj\Desktop\New folder\01_Simulation&Export.rar"))
{
foreach (var item in zip)
{
item.Extract();
}
}


ولی خطا داد که نمیتونه فایل zip رو هندل کنه (احتمالا بخاطر اینکه فایل rar رو دادم گفت)

Mahmoud.Afrad
دوشنبه 21 تیر 1395, 07:54 صبح
پکیج NUnrar فایلهای دارای پسورد رو نمیتونه از حالت فشرده خارج کنه. از پکیج SharpCompress میتونید استفاده کنید.


به نوع Entries توجه کنید، Entries مجموعه ای از RarArchiveEntry هست.

SajjadKhati
دوشنبه 21 تیر 1395, 10:21 صبح
ممنون دوستان
من کد Unrar.dll رو دارم تقریبا اما چون فایل اش Native هه ، add to reference نمیشه . انگار با روش دیگه ای باید add to reference کرد که بلد نیستم. راهنمایی میکنین add to reference اش چجوری هه؟؟ :

http://www.rarlab.com/rar/UnRARDLL.exe

SajjadKhati
دوشنبه 21 تیر 1395, 12:51 عصر
پکیج NUnrar فایلهای داراری پسورد رو نمیتونه از حالت فشرده خارج کنه. از پکیج SharpCompress میتونید استفاده کنید.


به نوع Entries توجه کنید، Entries مجموعه ای از RarArchiveEntry هست.

ممنون
اینم تست کردم ، گزینه ای برای وارد کردن پسورد نداشت. اگه میدونین ، راهنمایی کنین ممنون میشم

Mahmoud.Afrad
دوشنبه 21 تیر 1395, 13:40 عصر
RarArchive archive = RarArchive.Open("File Path", Options.None, "Password");

SajjadKhati
دوشنبه 21 تیر 1395, 13:52 عصر
RarArchive archive = RarArchive.Open("File Path", Options.None, "Password");

ممنون
این کد رو خودتون تست کردین؟
آخه متد open ، اصلا 3 تا آرگومان نمیگیره . حداکثر دو تا آرگومان میگیره
منظور من این مسیره از متد open هه :



SharpCompress.Archive.Rar.RarArchive.Open

Mahmoud.Afrad
دوشنبه 21 تیر 1395, 15:01 عصر
اگر از codeplex دانلود کردید، ورژن قدیمی هست و آپدیت نمیشه و برنامه نویسش توسعه این پروژه رو به github منتقل کرده

https://github.com/adamhathcock/sharpcompress

از nuget بگیرید میتونید همیشه به آخرین نسخه آپدیت کنید.

SajjadKhati
دوشنبه 21 تیر 1395, 15:53 عصر
اگر از codeplex دانلود کردید، ورژن قدیمی هست و آپدیت نمیشه و برنامه نویسش توسعه این پروژه رو به github منتقل کرده

https://github.com/adamhathcock/sharpcompress

از nuget بگیرید میتونید همیشه به آخرین نسخه آپدیت کنید.

ممنون
ولی این پروژه فایل dll نداره!!
میگین کدوم فایل برای کار من (اکسترکت کردن فایل رار) مورد نیاز هه تا به پروژه ام پیوست کنم؟

Mahmoud.Afrad
دوشنبه 21 تیر 1395, 16:44 عصر
میتونید از اون آدرس کل پروژه رو دانلود و کامپایل کنید و از dll بدست آمده استفاده کنید

یا اینکه از طریق nuget package manager پکیج SharpCompress رو دانلود کنید.
https://www.nuget.org/packages/sharpcompress

SajjadKhati
دوشنبه 21 تیر 1395, 17:20 عصر
دوستان از کمک تون ممنونم
درست شد

AMIRREZAAAA
پنج شنبه 21 شهریور 1398, 14:41 عصر
سلام ببخشید میخواستم با استفاده از
پکیج sharpcompress که تونستم فایل dll اش رو
پیدا کنم فایل rar دارای
پسورد رو اکسترکت کنم ولی متاسفانه کدش رو ندارم میتونین کمکم کنین؟ با تشکر

Mahmoud.Afrad
پنج شنبه 21 شهریور 1398, 14:50 عصر
سلام ببخشید میخواستم با استفاده از

پکیج sharpcompress که تونستم فایل dll اش رو

پیدا کنم فایل rar دارای

پسورد رو اکسترکت کنم ولی متاسفانه کدش رو ندارم میتونین کمکم کنین؟ با تشکر


https://github.com/adamhathcock/sharpcompress/wiki/API-Examples

AMIRREZAAAA
پنج شنبه 21 شهریور 1398, 19:22 عصر
https://github.com/adamhathcock/sharpcompress/wiki/API-Examples
با تشکرد از ادمین ولی هر کدی میزنم با اینکه همه کتابخونه ها رو رفرنس کردم ولی فایل رمز دار رو باز نمیکنه میتونین این کدش رو بدین

Mahmoud.Afrad
جمعه 22 شهریور 1398, 16:38 عصر
با تشکرد از ادمین ولی هر کدی میزنم با اینکه همه کتابخونه ها رو رفرنس کردم ولی فایل رمز دار رو باز نمیکنه میتونین این کدش رو بدین

کد من و دیگری نداره. من هم بنویسم همون کد خواهد بود.
اگر خطا دارید متن خطا بزارید.