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

Cita:
Iniciado por alexg88 Ver Mensaje
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
Disculpa muchas muchas gracias, me a servido mucho el codigo y probablemente sea la version del Visual ya que el mio es 2005, solo le modifique el EnumarateFiles por GetFiles ya que me marcaba error para comprimir los archivos de subcarpetas :D, gracias y buen fin de semana!! \♦/