Ver Mensaje Individual
  #1 (permalink)  
Antiguo 12/06/2013, 07:38
davidalonsso05
 
Fecha de Ingreso: enero-2013
Mensajes: 93
Antigüedad: 11 años, 3 meses
Puntos: 0
Pregunta Comprimir los archivos de una carpeta por SEPARADO.

Buenos días!
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
  1. Imports System.IO
  2. Imports System.IO.Directory
  3. Imports System.IO.DirectoryInfo
  4. Imports ionic.Zip
  5. Imports Ionic.BZip2
  6. Imports System.IO.Compression
  7.  
  8. Public Class Form1
  9.     Private Sub Button1_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button1.Click
  10.         Try
  11.  
  12.             With FolderBrowserDialog1
  13.                 .Reset()
  14.                 .Description = " Seleccionar una carpeta "
  15.                 .SelectedPath = Environment.GetFolderPath(Environment.SpecialFolder.MyDocuments)
  16.                 .ShowNewFolderButton = False
  17.                 Dim ret As DialogResult = .ShowDialog
  18.                 If ret = Windows.Forms.DialogResult.OK Then
  19.                     Dim nFiles As ObjectModel.ReadOnlyCollection(Of String)
  20.                     nFiles = My.Computer.FileSystem.GetFiles(.SelectedPath)
  21.                     TextBox1.Text = FolderBrowserDialog1.SelectedPath.ToString()
  22.                     MsgBox("Total de archivos: " & CStr(nFiles.Count), _
  23.                                             MsgBoxStyle.Information)
  24.                 End If
  25.                 .Dispose()
  26.             End With
  27.             Archivos()
  28.         Catch oe As Exception
  29.             MsgBox(oe.Message, MsgBoxStyle.Critical)
  30.         End Try
  31.     End Sub
  32.  
  33.     Public Sub Archivos()
  34.         Dim folder As New DirectoryInfo(Me.TextBox1.Text)
  35.  
  36.         For Each file As FileInfo In folder.GetFiles()
  37.             ListBox1.Items.Add(file.Name)
  38.            
  39.         Next
  40.     End Sub
  41.    
  42.  
  43.  
  44.     Public Sub Comprimir()
  45.         Dim txtFiles = Directory.GetFiles(Me.TextBox1.Text, "*", SearchOption.AllDirectories)
  46.         Dim FileN As String = ListBox1.Items.ToString
  47.         Using zip As ZipFile = New ZipFile()
  48.             For Each currentFile As String In txtFiles
  49.                 zip.AddFile(currentFile, "")
  50.                 zip.Save(System.IO.Path.Combine(System.IO.Path.GetDirectoryName(Me.TextBox1.Text), System.IO.Path.GetFileNameWithoutExtension(currentFile) + ".zip"))
  51.             Next
  52.         End Using
  53.     End Sub
  54.  
  55.     Private Sub Comprimir_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button3.Click
  56.         If TextBox1.Text = "" Then
  57.             MessageBox.Show("Ingrese una carpeta")
  58.         Else
  59.             Comprimir()
  60.             MessageBox.Show("Carpeta comprimida")
  61.         End If
  62.  
  63.  
  64.     End Sub
  65. 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
  1. Public Sub Archivos()
  2.         Dim folder As New DirectoryInfo(Me.TextBox1.Text)
  3.  
  4.         For Each file As FileInfo In folder.GetFiles()
  5.             'ListBox1.Items.Add(file.Name)
  6.            'AQUI COMPRIMIR LOS ARCHIVOS
  7.        Next
  8.     End Sub

Pero no se como seria cualquier ayuda gracias!