استخراج يه فايل خاص از فايل هاي jar

blue_rays

Member
سلام.
من يه سوالي در خصوص Extract كردن يك فايل خاص از يك فايل فشرده داشتم.:
من ميخام يك فايل با يك اسم خاص رو در صورتي كه در فايل فشرده وجود داشته باشه رو استخراج كنم.
همونطور كه مي دونيد فايل هاي jar يكي از انواع فرمت ها هستن كه مجموع اي از فايل ها و پوشه ها رو در خودشون جمع يا به اصلاح پك كردن و مربوط به زبان برنامه نويسي جاوا مي باشند. اين فايل ها فشرده شده نيستن ولي با برنامه هايي مثل ٌWinrar باز ميشن.:paint:
من ميخام فايل icon.png رو كه توي بيشتر فايل هاي jar به همين اسم وجود داره استخراج كنم. :shock:
با برنامه اي كه آقا حامد قبلآ گذاشته بودن اين فرمت باز نميشه حتي اگه پسوندش رو بصورت دستي تغيير بديم. ولي با پلاگين plugy اين كار عملي هست. ولي مشكلش اينه كه بايد index فايل مورد نظر رو داشته باشيم. در صورتي كه نداشته باشيم ميتونيم از دستور z_find يه سري اطلاعات شامل index فايل مورد نظرمون كه تو فايل jar وجود داره رو بدست بياريم. ولي متاسفانه دستور z_find هيچي پيدا نميكنه. در صورتي كه فايل مورد نظر هم موجو هست.:lol:
البته ميشه كل فايل هارو از فايل jar استخراج كرد و توي اونا به دنبال icon.png گشت ولي بهتره كه استخراج همه ي فايله توي مسير Temp صورت بگيره تا شلوغ نشه و كاربر فقط آيكون بدست اومد رو ببينه. ولي من هر كاري كردم استخراج در همون مسير فايل انجام ميگيره حتي اگه فايل رو اول به temp هم كپي كنيم نميشه. من با يه مشكل خنده دار روبرو شدم ولي شما هم امتحان كنيد شايد واسه شما جواب بده و من گيج زده باشم. من از عصبانيت سورس اصلي رو پاك كردم و بازسازي مقداري از اون رو پيوست كردم. ديگه مخم نميكشيد آخه!
حالا از دوستان اگه كسي بتونه كمك كنه خيلي ممنون ميشم.:)
بعد اينكه چطور از اطلاعات بدست اومده فقط مقدار index رو توي يه متغيير ذخيره كنيم. چون اطلاعات بدست امده بصورت يك عبارت رشته اي خطي برگشت داده ميشه ولي با علامت | از هم جدا هستن.
سورس برنامه رو به همراه نمونه فايل jar پيوست كردم.

ممنون
 

پیوست ها

  • jar icon extractor.rar
    144.9 کیلوبایت · بازدیدها: 33
آخرین ویرایش:

ali_118

کاربر VIP
دقیقا نفهمیدم مشکل شما چیه

شما میخواید فایل icon.png رو از فایل jar خارج کنید ؟
خب طبق فرمایش خودتون winrar همین کار رو بسیار عالی انجام میده
تست کردم ، ظاهرا هیچ مشکلی هم وجود نداره .

موفق باشید
 

blue_rays

Member
سلام.
مثل اينكه منظورمو خوب نرسوندم. منظورم استفاده از نرم افزار winrar نيست. من ميخام يه برنامه درست كنم كه فايل jar رو كه باهاش باز ميكنيم فايل icon.png داخلش رو برامون استخراج كنه. حالا ممكنه اين فايل تو شاخه ي اصلي باشه يا اينكه تو زير شاخه ي ديگري باشه. برنامه بايد اين فايل رو از داخل فايل jar پيدا كنه و برامون استخراج كنه. plugy اين كار رو خوب انجام ميده ولي نميدونم چطوري براش تعيين كنم كه فقط فايل icon.png رو استخراج كنه.:-?
 

nevercom

کاربر متخصص انجمن مولتی مدیا بیلدر
سلام

من مثالتون رو کمی تغییر دادم، اگه آیکن تو ROOT فایل JAR باشه که استخراج میکنه، اگه نه هم که تمام فایلهای آرشیو رو جستجو میکنه برای فایل icon.png و اگه پیداش کرد ذخیرش میکنه
البته چون وقت نداشتم نشد خیلی روش کار کنم، ولی پیشنهاد میکنم روی دستور z_Basedir کمی کار کنید، از اونجایی که بیشتر وقتها اگه آیکن تو ریشه نباشه، معمولاً توی فولدر res هست
 

پیوست ها

  • JAR icon.rar
    95.7 کیلوبایت · بازدیدها: 28

blue_rays

Member
سلام. شرمنده كه بازم مزاحم شدم. ولي مشكلم هنوز حل نشده.
من بررسي كردم ديدم توي همه ي فايل هاي jar فايل به اسم MANIFEST.MF در شاخه ي META-INF وجود داره كه حاوي اطلاعات در مورد اون فايل هست. همه ي فايل هاي jar بلا استثناء اين فايل رو دارن. اين فكر ميكنم كار رو راحت تر ميكنه چون مسيرش ثابته. خيلي روش كار كردم حتي دستور z_basedir هم استفاده كردم كه متاسفانه در فايل help خود پلاگي هم چيزي در مورد دستوارتش ننوشته.:sad:
اگه بشه فايل MANIFEST.MF رو استخراج كرد ديگه اين مبحث تموم شده هستش. اينم اضافه كنم اين فايل شامل اطلاعاتي در مورد اون برانامه ي جاوا هست كه شامل مسير آيكون هم ميشه.
اين برنامه رو بعنوان يه برنامه كمكي براي استفاده در باكس SEtools براي تغيير و اضافه كردن برنامه ي دلخواه به منوي گوشي هاي سوني اريكسون ميخاستم درست كنم كه اگه انجام بشه خيلي برنامه باحالي ميشه و تا حالا ساخته نشده.:)
 

nevercom

کاربر متخصص انجمن مولتی مدیا بیلدر
بله درسته، اتفاقاً بعد هم که کمی فایلهای JAR موجود رو بررسی کردم به همین موضوع پی بردم و اینکه مثلاً در تمام موارد اسم فایل آیکن، icon.png نیست و میتونه هر نام دیگه ای داشته باشه (مثل i.png) که تمام این اطلاعات در همون فایل که اشاره کردین وجود داره و کافیه که اون فایل رو پس از استخراج، پردازش کنید.

همین مثالی رو که براتون گذاشتم میتونه فایل رو براتون پیدا کنه و استخراج کنه، البته من این رو برای همون موضوع اول که استخراج فایل icon.png بود نوشتم، ولی فرقی نمیکنه و میشه فقط با تغییر نام فایل، کاری کرد که اون فایل رو پیدا و استخراج کنه

این مثال اول چک میکنه که اگه فایل icon.jar در ریشه ی فایل jar موجود باشه و استخراجش میکنه، در غیر اینصورت، تمام فایلهای آرشیو رو چک میکنه و هربار رشته ی بازگشتی رو با یک عبارت که همون نام فایلمون هست مقایسه میکنه، اگه اون عبارت در رشته موجود بود، یعنی فایل مورد نظر پیدا شده و ایندکس اون فایل رو میده به دستور z_extract و فایل رو استخراج میکنه
که در این مورد شما فقط به قسمت دوم احتیاج دارید

دستور Z-Basedir هم کاربرد دیگه ای داره که البته اشتباه از من بود و بعد از بررسی متوجه شدم که کمکی نمیتونه در این زمینه کنه

فقط نکته ای که وجود داره و من با بررسی کدی که نوشتم و مثالهای موجود برای این پلاگین متوجه اون شدم اینه که شما باید رشته ی بازگشتی که بصورت یک آرایه هست رو با استفاده از دستورات خود پلاگین پردازش کنید و نه توابع موجود در MMB برای پردازش آرایه ها.
چون روی سیستم من برنامه هنگ میکرد.

باید از دستور s_token برای اینکار استفاده کرد

یه مثال براتون پیوست کردم، به بخش Zip این فایل و اسکریپت File Open توجه کنید.
 

پیوست ها

  • DRL Plugy Demo.rar
    107.2 کیلوبایت · بازدیدها: 23

blue_rays

Member
ممنون. ولي من اولين فايلي كه بررسي كردم همين بود. بازم بيشتر بررسي ميكنم.
 

nevercom

کاربر متخصص انجمن مولتی مدیا بیلدر
این همون مثال هست که تغییراتی رو که بهش اشاره کردم رو درش اعمال کردم، الان بدون هیچ مشکلی باید بتونید هر فایلی رو (در اینجا اختصاصاً MANIFEST.MF) استخراج کنید.

فقط توجه کنید که اگه فایلی با همین نام قبلاً در اون پوشه موجود باشه، احتمال داره فایل استخراج نشه که میتونید قبل از استخراج چک کنید که اگه همچین فایلی موجود بود پاکش کنید. برای اینکار میتونید از دستور Delete خود Plugy استفاده کنید.
 

پیوست ها

  • JAR icon.rar
    95.8 کیلوبایت · بازدیدها: 27

جدیدترین ارسال ها

بالا