c # - Как я могу записать файл в поток памяти, заархивировать три из этих потоков памяти и поместить его в другой поток памяти?

Во-первых, я хочу создать три файла, фактически не создавая файл, такой как memorystream. Я хочу сжать эти три файла и поместить их в поток памяти. Можно поместить zip-файл в memoeystream, но, как и в 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");
}

person lcy    schedule 19.02.2017    source источник


Ответы (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($"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");
            }
person Filip Cordas    schedule 19.02.2017
comment
Спасибо. я очень ценю это - person lcy; 19.02.2017