Ver Mensaje Individual
  #4 (permalink)  
Antiguo 13/06/2013, 14:56
alexg88
 
Fecha de Ingreso: abril-2011
Mensajes: 1.342
Antigüedad: 13 años
Puntos: 344
Respuesta: Comprimir los archivos de una carpeta por SEPARADO.

Tienes varios fallos:

1º Creas el fichero zip fuera del bucle, por eso se te crea los siguientes zip con los ficheros anteriores.
2º Estás usando mal esto: System.IO.Path.GetDirectoryName(Me.TextBox1.Text. Esto devuelve el directorio de la ruta que le pases. Por tanto, si has seleccionado el directorio C:\Directorio\Prueba, te va a devolver C:\Directorio.

Te recomiendo además que uses el método EnumerateFiles, que es más eficiente. (Puedes leer porque buscando en Google).

Además, no indicas si quieres comprimir los ficheros en subdirectorios o sólo los que se encuentren en el directorio directamente. Si quieres en los subdirectorios sólo tienes que cambiar Directory.EnumerateFiles(Me.TextBox1.Text) por Directory.EnumerateFiles(Me.TextBox1.Text, "*", SearchOption.AllDirectories)

Código vb:
Ver original
  1. Public Sub Comprimir()
  2.         Dim txtFiles = Directory.EnumerateFiles(Me.TextBox1.Text)
  3.  
  4.         For Each currentFile As String In txtFiles
  5.             Using zip As ZipFile = New ZipFile()
  6.                 zip.AddFile(currentFile, "")
  7.                 zip.Save(System.IO.Path.Combine(System.IO.Path.GetDirectoryName(currentFile), System.IO.Path.GetFileNameWithoutExtension(currentFile) + ".zip"))
  8.             End Using
  9.         Next
  10.     End Sub