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 originalImports 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 originalPublic 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!