2017-02-19 1 views
2

Tout d'abord, je veux créer trois fichiers sans réellement créer un fichier comme memorystream. Je veux compresser ces trois fichiers et les mettre dans un memoeystream. Il est possible de mettre un fichier zip dans memoeystream, mais comme memorystream, peut-il contenir trois fichiers sans créer de fichier?C# - Comment puis-je écrire un fichier dans un flux de mémoire, compresser trois de ces flux de mémoire et le mettre dans un autre flux de données?

Voici mon code,

using (MemoryStream ms = new MemoryStream()) { 
    using (ZipArchive fileContainer = new ZipArchive(ms, ZipArchiveMode.Create, true)) { 
     using(MemoryStream fileMS = new MemoryStream()){ 
     //I want to create file to like memorystream, Not local 
     //file txt1.txt contain 123456789   
     //file txt2.txt contain 12345 
     //file txt1.txt contain 6789  
     }    
    } 
    return File(ms.ToArray(), System.Net.Mime.MediaTypeNames.Application.Octet, "Result.zip"); 
} 

Répondre

2

travaillé très bien pour moi

using (MemoryStream ms = new MemoryStream()) 
      { 
       using (ZipArchive archive = new ZipArchive(ms, ZipArchiveMode.Create, true)) 
       { 
        for (int i = 0; i < 3; i++) 
        { 
         ZipArchiveEntry readmeEntry = archive.CreateEntry($"text{i}.txt"); 
         using (StreamWriter writer = new StreamWriter(readmeEntry.Open())) 
         { 
          writer.WriteLine("text"); 
         } 
        } 

       } 
       return File(ms.ToArray(), System.Net.Mime.MediaTypeNames.Application.Octet, "Result.zip"); 
      } 
+0

Merci. j'apprécie vraiment cela – lcy