I am trying to compress two text files into a zip file. This is what my public method looks like:
public ActionResult Index() { byte[] file1 = System.IO.File.ReadAllBytes(@"C:\file1.txt"); byte[] file2 = System.IO.File.ReadAllBytes(@"C:\file2.txt"); Dictionary<string, byte[]> fileList = new Dictionary<string, byte[]>(); fileList.Add("file1.txt", file1); fileList.Add("file2.txt", file2); CompressToZip("zip.zip", fileList); return View(); }
Here's what my compression method looks like:
private void CompressToZip(string fileName, Dictionary<string, byte[]> fileList) { using (var memoryStream = new MemoryStream()) { foreach (var file in fileList) { using (var archive = new ZipArchive(memoryStream, ZipArchiveMode.Create, true)) { var demoFile = archive.CreateEntry(file.Key); using (var entryStream = demoFile.Open()) using (var b = new BinaryWriter(entryStream)) { b.Write(file.Value); } } } using (var fileStream = new FileStream(fileName, FileMode.Create)) { memoryStream.Seek(0, SeekOrigin.Begin); memoryStream.CopyTo(fileStream); } } }
In this approach, the zip folder is perfectly created. However, the problem is that I get only one file inside the zip folder (only the second file will be created inside the zip folder). No errors were found.
Question: How to compress both text files to a zip folder?
Thank you for the advanced!
Dayan source share