ICSharpCode.SharpZipLib을 사용하여 웹에서 파일의 압축을 풀고 압축을 풀려면 압축되지 않은 바이트 배열을 가져와야합니다. 그러나 "InvalidOperationException :이 스트림에서 읽을 수 없습니다"오류가 발생합니다. 저는 C#에서 Unity3D에서 웹 플레이어로 대상을 사용하고 있습니다. 분명히 읽을 수 있기 때문에 문제가 확실하지 않습니다. 여기 내 코드와 모든 도움을 많이 주시면 감사하겠습니다.C# SharpZipLib Unity3D에서 압축을 풀려고 할 때 스트림을 읽을 수 없습니다.
using (MemoryStream s = new MemoryStream(bytes))
{
using (BinaryReader br = new BinaryReader(s))
{
using (ICSharpCode.SharpZipLib.Zip.ZipInputStream zip = new ICSharpCode.SharpZipLib.Zip.ZipInputStream(s))
{
byte[] bytesUncompressed = new byte[32768];
while (true)
{
Debug.Log("can read: " + zip.CanRead);
int read = zip.Read(bytesUncompressed, 0, bytesUncompressed.Length);
if (read <= 0)
break;
zip.Write(bytesUncompressed, 0, read);
}
}
}
}
여기에 왜 BinaryReader가 있습니까? 스트림을 버퍼링한다고 가정하면 스트림의 위치를 예상치 못한 위치로 옮길 가능성이 큽니다. 따라서 손상되거나 유효하지 않은 압축이 나타납니다. – whoisj
왜 같은 ZipInputStream을 읽고 쓰고 있습니까? 그게 가능한가? – whoisj