c# - 如何将文件写入内存流,压缩其中三个内存流,然后将其放入另一个内存流?
c# - How can I write a file to memorystream, zip three of those memorystreams, and put that into another memorystream?
首先,我想创建三个文件而不实际创建像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");
}
对我来说效果很好
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");
}
首先,我想创建三个文件而不实际创建像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");
}
对我来说效果很好
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");
}