Mi duda es como comprimir una carpeta con vb.net 2005, pero los archivos que esten dentro comprimirlos por separado.
Por ejemplo si la carpeta tiene 5 documentos, sin importar si son imagenes, .txt, .doc, etc. que me cree 5 archivos .zip en la misma carpeta, 1 por cada documento.
Hasta el momento tengo el siguiente codigo:
Código vb:
Ver original
Imports System.IO Imports System.IO.Directory Imports System.IO.DirectoryInfo Imports ionic.Zip Imports Ionic.BZip2 Imports System.IO.Compression Public Class Form1 Private Sub Button1_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button1.Click Try With FolderBrowserDialog1 .Reset() .Description = " Seleccionar una carpeta " .SelectedPath = Environment.GetFolderPath(Environment.SpecialFolder.MyDocuments) .ShowNewFolderButton = False Dim ret As DialogResult = .ShowDialog If ret = Windows.Forms.DialogResult.OK Then Dim nFiles As ObjectModel.ReadOnlyCollection(Of String) nFiles = My.Computer.FileSystem.GetFiles(.SelectedPath) TextBox1.Text = FolderBrowserDialog1.SelectedPath.ToString() MsgBox("Total de archivos: " & CStr(nFiles.Count), _ MsgBoxStyle.Information) End If .Dispose() End With Archivos() Catch oe As Exception MsgBox(oe.Message, MsgBoxStyle.Critical) End Try End Sub Public Sub Archivos() Dim folder As New DirectoryInfo(Me.TextBox1.Text) For Each file As FileInfo In folder.GetFiles() ListBox1.Items.Add(file.Name) Next End Sub Public Sub Comprimir() Dim txtFiles = Directory.GetFiles(Me.TextBox1.Text, "*", SearchOption.AllDirectories) Dim FileN As String = ListBox1.Items.ToString Using zip As ZipFile = New ZipFile() For Each currentFile As String In txtFiles zip.AddFile(currentFile, "") zip.Save(System.IO.Path.Combine(System.IO.Path.GetDirectoryName(Me.TextBox1.Text), System.IO.Path.GetFileNameWithoutExtension(currentFile) + ".zip")) Next End Using End Sub Private Sub Comprimir_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button3.Click If TextBox1.Text = "" Then MessageBox.Show("Ingrese una carpeta") Else Comprimir() MessageBox.Show("Carpeta comprimida") End If End Sub End Class
Como podran ver, el usuario selecciona la carpeta, esta ruta se pasa al Textbox1
PERO se queda trabado el programa al momento de comprimir la carpeta y solo me comprime 2 archivos, en el primer .zip viene un documento y en el segundo viene, el primer documento y el que le sigue y se queda paralizado el programa...
Me habia comentado mi jefe que en este pedazo podia ir comprimiendo uno por uno:
Código vb:
Ver original
Public Sub Archivos() Dim folder As New DirectoryInfo(Me.TextBox1.Text) For Each file As FileInfo In folder.GetFiles() 'ListBox1.Items.Add(file.Name) 'AQUI COMPRIMIR LOS ARCHIVOS Next End Sub
Pero no se como seria cualquier ayuda gracias!