Actualmente estoy usando la api de SharpZip para manejar mis entradas de archivo zip. Funciona espléndido para comprimir y descomprimir. Sin embargo, tengo problemas para identificar si un archivo es zip o no. Necesito saber si hay una manera de detectar si una secuencia de archivo se puede descomprimir. Originalmente utilicéC# .net identifique el archivo zip
FileStream lFileStreamIn = File.OpenRead(mSourceFile);
lZipFile = new ZipFile(lFileStreamIn);
ZipInputStream lZipStreamTester = new ZipInputStream(lFileStreamIn, mBufferSize);// not working
lZipStreamTester.Read(lBuffer, 0, 0);
if (lZipStreamTester.CanDecompressEntry)
{
El LZipStreamTester se vuelve nulo cada vez y la instrucción if falla. Lo intenté con/sin un buffer. ¿Alguien puede dar alguna idea de por qué? Soy consciente de que puedo verificar la extensión del archivo. Necesito algo que sea más definitivo que eso. También soy consciente de que zip tiene un # mágico (PK algo), pero no es una garantía de que siempre estará allí porque no es un requisito del formato.
También leí sobre .NET 4.5 con soporte nativo postal así que mi proyecto puede migrar a que en lugar de sharpzip pero todavía necesitan no vio un método/param similar a CanDecompressEntry aquí: http://msdn.microsoft.com/en-us/library/3z72378a%28v=vs.110%29
Mi último recurso será utilizar una captura de prueba e intentar un descomprimir en el archivo.
La forma más simple de mi pregunta es la siguiente "En el código anterior, ¿por qué la sentencia if return false?" –