2016-05-30 5 views
0

異なる拡張子を持つファイルを含むzipアーカイブを作成する方法を理解しようとしています。 .txtファイル、.htmlのファイルZipArchiveEntryを異なる拡張子を持つZipArchiveクラスに作成するC#

私は次のような場合:

using (var zipArchive = new ZipArchive(memory, ZipArchiveMode.Create, true)) 
{ 
    var file1= zipArchive .CreateEntry("file1.html"); 
    var file2= zipArchive .CreateEntry("file2.txt"); 

    using (var entryStream = file1.Open()) 
    using (var sw = new StreamWriter(entryStream)) 
    { 
     streamWriter.Write("testing testinsg steing"); 
    } 

    using (var entryStream = file2.Open()) 
    using (var sw = new StreamWriter(entryStream)) 
    { 
     sw.Write("xyxyxyxyxyxy"); 
    } 
} 

エントリは、モードを作成するには、一度だけに書き込むことができ、かつ唯一のエントリ は、一度に開放状態に保持することができます。

どうすればこの問題を解決できますか?

答えて

3

は、あなただけの行下に移動する必要があります。

using (var zipArchive = new ZipArchive(memory, ZipArchiveMode.Create, true)) 
{ 
    var file1= zipArchive .CreateEntry("file1.html"); 

    using (var entryStream = file1.Open()) 
    using (var sw = new StreamWriter(entryStream)) 
    { 
     streamWriter.Write("testing testinsg steing"); 
    } 

    var file2= zipArchive .CreateEntry("file2.txt"); // <-- move this down 
    using (var entryStream = file2.Open()) 
    using (var sw = new StreamWriter(entryStream)) 
    { 
     sw.Write("xyxyxyxyxyxy"); 
    } 
} 
+0

笑だった:

var file2= zipArchive .CreateEntry("file2.txt"); 

を...と場所あなたが前のエントリへの書き込みを終えたこと簡単!愚かな質問はあなたに感謝! –

+0

ああ、2秒遅すぎる^^。 「オープン」という用語は、そのエラーメッセージでは誤解を招くことがあります。実際に言うべきことは「前のものが閉じられるまで別のエントリを作成しないでください」 –

+0

@ManfredRadlwimmer仲間ありがとう! –

関連する問題