我有一個ASP.NET應用程序,用戶可以上傳ZIP文件。我試圖使用ICSharpZipLib提取文件(我也試過DotNetZip,但有同樣的問題)。ICSharpZipLib - unziping文件問題
此zip文件包含單個xml文件(壓縮前爲9KB)。
當我用桌面上的其他應用程序(7zip,Windows資源管理器)打開此文件時,它似乎沒問題。 我的解壓縮方法拋出System.OutOfMemoryException,我不知道爲什麼。當我調試我unziping方法我注意到zipInputStreams'長度屬性會引發異常和不適:
Stream UnZipSingleFile(Stream memoryStream)
{
var zipInputStream = new ZipInputStream(memoryStream);
memoryStream.Position = 0;
zipInputStream.GetNextEntry();
MemoryStream unzippedStream = new MemoryStream();
int len;
byte[] buf = new byte[4096];
while ((len = zipInputStream.Read(buf, 0, buf.Length)) > 0)
{
unzippedStream.Write(buf, 0, len);
}
unzippedStream.Position = 0;
memoryStream.Position = 0;
return unzippedStream;
}
,這裏是我如何獲得unzippedStream的字符串:
string GetString()
{
var reader = new StreamReader(unzippedStream);
var result = reader.ReadToEnd();
unzippedStream.Position = 0;
return result;
}
嘗試使用'string result = System.Text.Encoding.Default.GetString(unzippedStream);',因爲它可能是編碼的,並導致您在當前結果中看到的內容。 – 2012-02-21 14:19:29
「unzippedStream」是您班級的一個屬性嗎? 'GetString()'怎麼樣?我想知道你是否有名字碰撞的地方。你可以發佈調用'GetString()'的方法嗎? – 2012-02-21 14:24:23
你是怎麼調用這兩種方法的?你能舉一個例子嗎? – 2012-02-21 14:29:43