Here, 0 would indicate "no data"; -1 is indicating that it doesn't know the size of the data. Your best bet, then, is to read to the end of that entry. Perhaps:
MemoryStream ms = new MemoryStream();
while ((zipEntry = zipInputStream.GetNextEntry()) != null)
{
var fileName = Path.GetFileName(zipEntry.Name);
if (String.IsNullOrEmpty(fileName)) continue;
var identifier = fileName.Split('.')[1];
ms.SetLength(0); // reset between iterations, but let it re-use the memory
zipInputStream.CopyTo(ms);
var report = encoding.GetString(ms.GetBuffer(), 0, (int)ms.Length);
}