c# - 如何将文件写入内存流,压缩其中三个内存流,然后将其放入另一个内存流?

Posted

技术标签:

【中文标题】c# - 如何将文件写入内存流,压缩其中三个内存流,然后将其放入另一个内存流?【英文标题】:c# - How can I write a file to memorystream, zip three of those memorystreams, and put that into another memorystream? 【发布时间】:2017-02-19 14:54:32 【问题描述】:

首先,我想创建三个文件而不实际创建像 memorystream 这样的文件。我想压缩这三个文件并将它们放在 memoeystream 中。 memoeystream中可以放一个zip文件,但是像memorystream一样,它实际上可以包含三个文件而不创建文件吗?

这是我的代码,

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");

【问题讨论】:

【参考方案1】:

对我来说很好用

 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($"texti.txt");
                        using (StreamWriter writer = new StreamWriter(readmeEntry.Open()))
                        
                            writer.WriteLine("text");
                        
                    

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

【讨论】:

谢谢。我真的很感激

以上是关于c# - 如何将文件写入内存流,压缩其中三个内存流,然后将其放入另一个内存流?的主要内容,如果未能解决你的问题,请参考以下文章

为 AWS C# S3 SDK 使用内存流而不是文件流而不将完整文件写入 S3

C# - 将数据写入流 + 使用另一个流读取数据

如何将文件解压缩到 .NET 内存流?

java怎么将生成的文件放入内存?

将大型CSV流写入内存中的ZipOutputStream会占用与CSV或潜在zip的大小相同的内存吗?

c# zip写comment注释