C# 在C中创建包含来自内存流/字节数组的文件的压缩文档#

C# 在C中创建包含来自内存流/字节数组的文件的压缩文档#,c#,zip,bytearray,memorystream,C#,Zip,Bytearray,Memorystream,我需要创建一个压缩文档,其中包含服务器上存在的文件。我使用的是Ionic.Zip,要创建一个新的包(即Zip文件),我必须有一个指向物理文件或流的路径。我试图不创建一个实际的zip文件,而是创建一个存在于内存中的流。如何执行此操作?然后使用内存流创建包。您可以尝试ZipFile类中的save方法。它可以保存到流中 试试这个 using (MemoryStream ms = new MemoryStream()) { using (Ionic.Zip.ZipFile zipFile = new

我需要创建一个压缩文档,其中包含服务器上存在的文件。我使用的是Ionic.Zip,要创建一个新的包(即Zip文件),我必须有一个指向物理文件或流的路径。我试图不创建一个实际的zip文件,而是创建一个存在于内存中的流。如何执行此操作?

然后使用
内存流创建包。

您可以尝试ZipFile类中的save方法。它可以保存到流中 试试这个

using (MemoryStream ms = new MemoryStream())
{
 using (Ionic.Zip.ZipFile zipFile = new Ionic.Zip.ZipFile())
 {
   zipFile.AddFiles(filesToBeZipped, false, "NewFolder");//filesTobeZipped is a List<string>
   zipFile.Save(ms);
  }
}
使用(MemoryStream ms=new MemoryStream())
{
使用(Ionic.Zip.ZipFile-ZipFile=new-Ionic.Zip.ZipFile())
{
AddFiles(filesToBeZipped,false,“NewFolder”);//filesToBeZipped是一个列表
zipFile.Save(ms);
}
}

您需要在已创建的ZipFile上使用.AddEntry方法,指定名称和包含实际文件数据的字节[]


其中file.FileName将是条目名(在zip文件中),file.FileData是字节数组。

Vignesh Natraj:此zip文件保存在哪里,此新文件夹的含义是什么。如果你能尽快给出答案,这将对我有很大帮助。你可以检查AddFiles的方法签名,“NewFolder”是压缩Zip文件中的文件夹结构,我告诉该方法将所有文件放在一个名为NewFolder的文件夹中。它会像你要求的那样保存到内存流中。
    ZipFile zipFile = new ZipFile();
    zipFile.AddEntry(file.FileName, file.FileData);