2017-04-05 42 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