Estoy usando SharpZipLib para descomprimir archivos. Mi código ha estado trabajando muy bien para todos zipfiles excepto el archivo zip lo que estoy extracción de ahora ...SharpZipLib - ZipException "System.ArgumentOutOfRangeException" - ¿Por qué recibo esta excepción?
Tienes esta excepción:
System.ArgumentOutOfRangeException: Specified argument was out of the range of valid values.
Parameter name: length
La excepción está siendo lanzada a size = s.Read(data, 0, data.Length);
Hereb es mi código ...
public static void UnzipFile(string sourcePath, string targetDirectory)
{
try
{
using (ZipInputStream s = new ZipInputStream(File.OpenRead(sourcePath)))
{
ZipEntry theEntry;
while ((theEntry = s.GetNextEntry()) != null)
{
//string directoryName = Path.GetDirectoryName(theEntry.Name);
string fileName = Path.GetFileName(theEntry.Name);
if (targetDirectory.Length > 0)
{
Directory.CreateDirectory(targetDirectory);
}
if (fileName != String.Empty)
{
using (FileStream streamWriter = File.Create(targetDirectory + fileName))
{
int size = 2048;
byte[] data = new byte[2048];
while (true)
{
size = s.Read(data, 0, data.Length);
if (size > 0)
{
streamWriter.Write(data, 0, size);
}
else
{
break;
}
}
}
}
}
}
}
catch (Exception ex)
{
throw new Exception("Error unzipping file \"" + sourcePath + "\"", ex);
}
}
Acabo de probar su ejemplo y está funcionando bien para mí. O bien el problema con el paquete zip o con la versión de la biblioteca. Utilicé 'v1.1.4322' –
@Andrey: No existe tal versión de SharpZipLib, la última es 0.86. Creo que te confundes con el número de versión más largo para .NET 1.1. –
Ah, claro, fue el valor de propiedad de la versión en tiempo de ejecución. Lo siento. La biblioteca es de la versión 0.84 –