-1
我需要你的幫助。
1.)我在我的應用程序中創建ZipArchive從我從數據庫中獲得的二進制數組對象。
2.)在這些ZipArchive對象中,我應該刪除某些文件。
3)現在,我必須讓這些ZipArchive對象轉化成一個MemoryStream或者作爲一個byte []
這是代碼我使用:
foreach (var zip in fileList.Reverse())
{
using (var memStream = new MemoryStream(zip.Content, true))
{
var zipFile = new ZipArchive(memStream, ZipArchiveMode.Update);
foreach (var zipArchiveEntry in zipFile.Entries.Reverse())
{
if (IsNecessary(zipArchiveEntry.Name) == false)
{
zipArchiveEntry.Delete();
}
}
zip.Content = zipFile.Entries.Count > 0 ? memStream.ToArray() : null;
}
if (zip.Content == null)
{
fileList.Remove(zip);
}
}
return fileList;
目前這一行:
zip.Content = zipFile.Entries.Count > 0 ? memStream.ToArray() : null;
給我未清洗的MemoryStream回來,但我需要新的。
你們有沒有一些tipps或者可能是我的解決方案,我怎麼可以處理這與.NET?我已經搜索了一段時間,但它接縫,只是想在另一個方向做。
PS:刪除工作正常。
對不起,英文不好,並提前感謝您的幫助。 :-)
您的代碼看起來幾乎正確。您應該確保在使用memStream.ToArray()方法之前關閉最初的'zipFile'對象。否則,歸檔對象將不會更新流。只要給'zipFile'一個'using'語句,並將問題行保留在'using'塊之外。如果你需要更多的幫助,你需要解決你的問題,所以它包含一個很好的[mcve],清楚地表明你想要做什麼以及確切的問題是什麼。 –
(我發現你在'MemoryStream'上使用'using'語句很諷刺,它沒有用處,並且'zipFile'上沒有'using'語句,這對你來說很重要。) –
謝謝彼得,多數民衆贊成在這裏幫助。我不知道,zipFile在更新之前必須「關閉」。 – Malloc