複数のエントリを持つzipファイルを作成できません。私はthis同様の質問への答えを見てきましたが、それでも喜びはありません。次のように私のコードは次のとおりです。複数のエントリを持つZipファイルを作成する
var folders = await _folderManager.GetDescendentsAsync(id);
using (MemoryStream memoryStream = new MemoryStream())
{
// Build the archive
using (ZipArchive zipArchive = new ZipArchive(memoryStream, ZipArchiveMode.Create, true))
{
foreach (var folder in folders)
{
//get the path
var path = GetPath(folder);
foreach (var file in folder.Documents)
{
//get the file stream from storage
var docStream = _documentManager.DownloadById(file.Id);
//create an entry in the zip
ZipArchiveEntry archiveEntry = zipArchive.CreateEntry(path + file.Name);
using (var entryStream = archiveEntry.Open())
{
await docStream.CopyToAsync(entryStream);
}
}
}
using (var fileStream = new FileStream(@"C:\Temp\ZipFile.zip", FileMode.Create))
{
memoryStream.Seek(0, SeekOrigin.Begin);
await memoryStream.CopyToAsync(fileStream);
}
}
}
私は複数のエントリを持つzipファイルを取得しますが、私はそれを開こうとすると、エラー「アーカイブの予期しない終了」を取得しています。
誰も私が間違ってやっているものを私に伝えることができますか?
近い/フラッシュzipアーカイブ' CopyTo' – Lanorkin
と*前*セーブ結果:この問題を解決するには、
memoryStream
をFlush
缶やFlushAsync
.com/questions/9469434/error-creation-zip-file-using-dotnetzip-unexpected-end-of-archive – TheLethalCoderガー!今は分かりましたが、私は木の木を見ることができませんでした!私は文を使用してzipアーカイブ内のfileStreamにコピーしていました。 zipArchiveを破棄することで、私はファイルストリームにコピーすることができました。フラッシングは必要ありません。 – Orbit74