PDA

View Full Version : سوال: آیا میشود از فایل زیپ فقط یک فایل را با دستور آنزیپ کنیم یا بخوانیم؟



Rain_Saeid
پنج شنبه 23 بهمن 1393, 21:42 عصر
با سلام و درود

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

نکته اینکه فایل text داخل فایل zip که بنده لازم دارم در فایل های zip که میخوام باز بشن اسم یکسان دارند

gilsoft
جمعه 24 بهمن 1393, 00:27 صبح
با سلام و درود

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

نکته اینکه فایل text داخل فایل zip که بنده لازم دارم در فایل های zip که میخوام باز بشن اسم یکسان دارند

سلام دوست عزیز

ابندا رفرنس Microsoft Shell Controls And Automation رو از برگه COM به پروژه‌ات اضافه کن

سپس یک Button به نام btnUnzip و یک RichTextBox به فرم اضافه کن

اینم کد مربوطه:
Imports System.IO
Imports Shell32


Public Class Form1


Private Sub btnUnZip_Click(sender As System.Object, e As System.EventArgs) Handles btnUnZip.Click
Dim destPath As String = Environ("Temp")
Dim zipFilePath As String = "D:\zipFile.zip"
Dim txtFile As String = "MyTextFile.txt"


UnZip(destPath, zipFilePath, txtFile)


RichTextBox1.Text = File.ReadAllText(Path.Combine(destPath, txtFile), System.Text.Encoding.UTF8)
End Sub


Sub UnZip(destFolder As String, zipFile As String, File As String)
Me.Cursor = Cursors.WaitCursor


Dim sc As New Shell32.Shell()
If IO.Directory.Exists(destFolder) = False Then IO.Directory.CreateDirectory(destFolder)


'Declare the folder where the files will be extracted.
Dim ToExtract As Shell32.Folder = sc.NameSpace(destFolder)


'Declare your input zip file as folder.
Dim FromZip As Shell32.Folder = sc.NameSpace(zipFile)


'Extract the file from the zip file using the CopyHere command.
ToExtract.CopyHere(FromZip.Items.Item(File), 4 + 16)


GC.Collect()
Me.Cursor = Cursors.Default
End Sub


End Class


موفق باشیذ ....

Rain_Saeid
جمعه 24 بهمن 1393, 14:49 عصر
با تشکر از شما استاد عزیز
ولی جواب نگرفت..

این قسمت ارور میده :

RichTextBox1.Text = File.ReadAllText(Path.Combine(destPath, txtFile), System.Text.Encoding.UTF8)

gilsoft
جمعه 24 بهمن 1393, 18:21 عصر
با تشکر از شما استاد عزیز
ولی جواب نگرفت..

این قسمت ارور میده :

RichTextBox1.Text = File.ReadAllText(Path.Combine(destPath, txtFile), System.Text.Encoding.UTF8)

سلام مجدد

چه پیامی میده دوست عزیز ؟ :متفکر:

در واقع این قسمت برای نمایش فایل txt ( استخراج شده از zipFile ) درون یه RichTextBox هستش ...

شما کنترل کن و ببین ه فایل مورد نظر دریت استخراج شده یا نه ..... ؟

این قسمت , System.Text.Encoding.UTF8 رو حذف کن .. ببین مشکل برطرف میشه ؟

در ضمن پروژه‌ای رو که خودم برای پست 2# نوشته بودم رو ضمیه‌ی همین پست می‌کنم

موفق باشید .....

Rain_Saeid
شنبه 25 بهمن 1393, 06:16 صبح
سلام مجدد

چه پیامی میده دوست عزیز ؟ :متفکر:

در واقع این قسمت برای نمایش فایل txt ( استخراج شده از zipFile ) درون یه RichTextBox هستش ...

شما کنترل کن و ببین ه فایل مورد نظر دریت استخراج شده یا نه ..... ؟

این قسمت , System.Text.Encoding.UTF8 رو حذف کن .. ببین مشکل برطرف میشه ؟

در ضمن پروژه‌ای رو که خودم برای پست 2# نوشته بودم رو ضمیه‌ی همین پست می‌کنم

موفق باشید .....

باتشکر .. ولی بارم کار نکرد و پیغام خطا میده.. فایل اصلا استخراج نمیشه..

میشه همین کارو با کامپوننت Ionic.Zip.dll انجام داد ؟

gilsoft
شنبه 25 بهمن 1393, 06:44 صبح
باتشکر .. ولی بارم کار نکرد و پیغام خطا میده.. فایل اصلا استخراج نمیشه..

میشه همین کارو با کامپوننت Ionic.Zip.dll انجام داد ؟

سلام دوست عزیز

با
Ionic.Zip.dll هم میشه کارکرد ... ( اما من همیشه بر اینم که: برنامه‌ام به حداقلِ Dllها وابسته باشه و همین موضوع باعث شد که تا من از Shell ویندوز استفاده کنم )


اگه با
Ionic.Zip.dll میخوای باید به من وقت بدی تا برات آماده‌اش کنم ....

در ضمن اگه برات امکان داره نمونه‌ی فایل zip خودت رو تو سایت www.picofile.com آپلود کن و آدرسش رو بزار تا من با نمونه‌ی خودت کار کنم


موفق باشید .....

Rain_Saeid
پنج شنبه 07 اسفند 1393, 06:53 صبح
از دوستان دیگه کسی نبود بنده رو راهنمایی کنه
هنوز به نتیچه نرسیدم

ممنون میشم راهنمایی بفرمایید

mehran901
پنج شنبه 07 اسفند 1393, 16:21 عصر
سلام

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

[path\winrar.exe] x [path to zip file] [files to extract, . for all files] [path folder to extract to]
EXAMPLE:
"C:\Program Files\WinRAR\winrar.exe" x c:\file.zip *.* c:\folder\
راه دوم :
microsoft shell control and automation رو به رفرنس اضافه کنید

Dim a As New Shell
a.NameSpace("c:\1\").CopyHere a.NameSpace("c:\mehran.zip").Items

Hossis
شنبه 09 اسفند 1393, 16:55 عصر
اصولا نرم افزارهای فشرده ساز، کل فایل فشرده رو انزیپ کرده و در پوشه موقت می ریزند، بعد فایل انتخابی شما رو تحویل می دن و پس از بستن برنامه (مثلا وین رار) پوشه موقت رو حذف می کنند. لذا فکر نکنم امکان داشته باشه که فقط یک فایل از درون فایل فشرده به تنهایی قابل استخراج باشه
در مورد استخراج آرشیو هم راههای مختلفی وجود داره که دوستان اشاره کردند
تو سایت کدپروجکت نمونه های خوبی دیدم و استفاده کردم، می تونید تو این سایت جستجو کنید.

gilsoft
شنبه 09 اسفند 1393, 22:46 عصر
از دوستان دیگه کسی نبود بنده رو راهنمایی کنه
هنوز به نتیچه نرسیدم

ممنون میشم راهنمایی بفرمایید

سلام مجدد

فایل ضمیمه پست 4# Update شد ...

پروژه‌ی قبلی هم به درستی کار می‌کرد ( مشکل در نامگذاری فایل zip بود )

تو این پروژه یه فایل zip با نام مورد نظر شما تو مسیر برنامه (Debug) هست .. لطفاً ملاحظه بفرمائید ...

من چندبار Test کردم و مطمئنم که به درستی کار می‌کنه ... ( فقط پروژه رو اول Build کن )

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

موفق باشید .....

Rain_Saeid
سه شنبه 12 اسفند 1393, 15:04 عصر
با سلام مجدد
آره برنامه ای که ریختی اجرا میشه ولی فقط همون فایل زیپ اجرا میشه
فایل زیپی که من اد میکنم براش اجرا نمیشه

gilsoft
سه شنبه 12 اسفند 1393, 15:21 عصر
با سلام مجدد
آره برنامه ای که ریختی اجرا میشه ولی فقط همون فایل زیپ اجرا میشه
فایل زیپی که من اد میکنم براش اجرا نمیشه

سلام مجد
اون فایلی رو که Add میکنی رو اگه اسمش رو تغییر نام بدی .. مشکل شما برطرف میشه ... ( من هم همین کار رو کردم )

موفق باشید .....