Foros del Web » Programación para mayores de 30 ;) » .NET »

Problema para zipear usando SharpZipLib

Estas en el tema de Problema para zipear usando SharpZipLib en el foro de .NET en Foros del Web. Hola! ¿Como andan? Estoy tratando de zipear un archivo previamente cargado con un File Field utilizando la librería SharpZipLib. Resulta que al invocar el método ...
  #1 (permalink)  
Antiguo 06/02/2008, 09:27
Avatar de lucasiramos  
Fecha de Ingreso: agosto-2004
Ubicación: Santa Rosa, La Pampa, Argentina
Mensajes: 1.484
Antigüedad: 19 años, 8 meses
Puntos: 13
Problema para zipear usando SharpZipLib

Hola! ¿Como andan? Estoy tratando de zipear un archivo previamente cargado con un File Field utilizando la librería SharpZipLib. Resulta que al invocar el método Comprimir del ZipUtil.vb, al llegar a la línea Dim strmFile As FileStream = File.OpenRead(strFile) me tira un error que dice "El proceso no puede obtener acceso al archivo C:\Inetpub\wwwroot... (etc, etc) porque está siendo utilizado en otro proceso.".

¿Que puede estar pasando? Lo raro es que desde otro File Field sí puedo subir y zipear los archivos que subo.
Gracias por adelantado.

Saludos. Lucas
  #2 (permalink)  
Antiguo 06/02/2008, 10:47
Avatar de lucasiramos  
Fecha de Ingreso: agosto-2004
Ubicación: Santa Rosa, La Pampa, Argentina
Mensajes: 1.484
Antigüedad: 19 años, 8 meses
Puntos: 13
Re: Problema para zipear usando SharpZipLib

Listo, resuelto. No era un problema de permisos ni mucho menos de la clase que esta requetecontra probada. Era un lío de variables

Gracias a los que leyeron.

Saludos
  #3 (permalink)  
Antiguo 28/10/2008, 08:54
 
Fecha de Ingreso: septiembre-2008
Mensajes: 4
Antigüedad: 15 años, 7 meses
Puntos: 0
Respuesta: Problema para zipear usando SharpZipLib

A mi lo que me pasa es que la compresión no la hace bien.


Si lo comprimo con el winzip, me lo descomprime de puta madre pero comprimiendolo con el código siguiente, me da errores "Size mismatch".


Public Sub Comprimir(ByVal strFileNames() As String, ByVal strZipFic As String, _
Optional ByVal crearAuto As Boolean = False)
' comprimir los ficheros del array en el zip indicado
' si crearAuto = True, zipfile será el directorio en el que se guardará
' y se generará automáticamente el nombre con la fecha y hora actual
Dim objCrc32 As New Crc32
Dim oZipOutputStream As ZipOutputStream

If strZipFic = "" Then
strZipFic = "."
crearAuto = True
End If
If crearAuto Then
' Si se crea el nombre del fichero, path + fecha
strZipFic &= "\ZIP" & DateTime.Now.ToString("yyMMddHHmmss") & ".zip"
End If
oZipOutputStream = New ZipOutputStream(File.Create(strZipFic))
' SetLevel -> 0: no compression
' SetLevel -> 9: maximum compression
oZipOutputStream.SetLevel(6)

Dim strFile As String
For Each strFile In strFileNames
Dim strmFile As FileStream = File.OpenRead(strFile)
Dim bytBuffer(Convert.ToInt32(strmFile.Length - 1)) As Byte

strmFile.Read(bytBuffer, 0, bytBuffer.Length)

'------------------------------------------------------------------
' para guardar sin el primer path
'Dim sFile As String = strFile
'Dim i As Integer = sFile.IndexOf("\")
'If i > -1 Then
' sFile = sFile.Substring(i + 1).TrimStart
'End If
'------------------------------------------------------------------
'
'------------------------------------------------------------------
' para guardar sólo el nombre del fichero
' esto sólo se debe hacer si no se procesan directorios
' que puedan contener nombres repetidos
'Dim sFile As String = Path.GetFileName(strFile)
'Dim theEntry As ZipEntry = New ZipEntry(sFile)
'------------------------------------------------------------------
'
' se guarda con el path completo
Dim theEntry As ZipEntry = New ZipEntry(strFile)
'
' guardar la fecha y hora de la última modificación
Dim fi As New FileInfo(strFile)
theEntry.DateTime = fi.LastWriteTime
'theEntry.DateTime = DateTime.Now
'
theEntry.Size = strmFile.Length
strmFile.Close()
objCrc32.Reset()
objCrc32.Update(bytBuffer)
theEntry.Crc = objCrc32.Value
oZipOutputStream.PutNextEntry(theEntry)
oZipOutputStream.Write(bytBuffer, 0, bytBuffer.Length)
Next
oZipOutputStream.Finish()
oZipOutputStream.Close()
End Sub


Si tras comprimir con este método, lo abro con el Winzip e intento extraer sólo un fichero me dice:
"The compressed size stored in the local header for this file is not the same as the compressed size stored in the central header"
Si los extraigo todos no hay problema.

No entiendo nada :S
Atención: Estás leyendo un tema que no tiene actividad desde hace más de 6 MESES, te recomendamos abrir un Nuevo tema en lugar de responder al actual.
Respuesta




La zona horaria es GMT -6. Ahora son las 01:08.