2017-04-05 7 views
1

私はリスト構造内のデータベースや店舗の記録からいくつかの情報を要求する.NET C#アプリケーションを持っているのリストから郵便番号を作成します。DotNetZip - アイテム

public Class Record { 

    public string name { get; set; } 
    public string surname { get; set; } 
} 

List<Record> lst = new List<Record>(); 

このリストを繰り返し、各レコードをzipファイルに追加したいと思います。私はこれらのすべてのレコード(行ごとに)を含んでいるtxtファイルを作成したくないし、一度ディスクに保存したファイルをzipファイルを作成したいとは思いません。つまり、ディスク上に中間ファイルを作成したくありません。 zipファイルを作成します。このDotNetZipを使用して

はどのようにして行うことができますか?

+0

これは、任意のストリームで動作するはずです。あなたは 'MemoryStream'を試しましたか? – itsme86

答えて

1

ZipFileは任意のストリームを取ることができます。

ZipFile.AddEntry(string entryName, Stream stream) 

MemoryStreamを作成し、そのストリームをファイルに追加するとします。例えば

using (var stream = new MemoryStream()) { 
    using (var sw = new StreamWriter(stream)) { 
     foreach (var record in lst) { 
      sw.WriteLine(record.surname + "," + record.name); 
     } 
     sw.Flush(); 
     stream.Position = 0; 

     using (ZipFile zipFile = new ZipFile()) { 
      zipFile.AddEntry("Records.txt", stream); 
      zipFile.Save("archive.zip"); 
     } 
    } 
} 
+0

素晴らしい!ワーキング!どうも。 – user1624552

関連する問題