gpt4 book ai didi

c# - 如何在 C# 中使用 GZipStream 压缩多个文件

转载 作者:行者123 更新时间:2023-11-30 16:11:14 24 4
gpt4 key购买 nike

我使用数据表创建了多个 csv 文件,并想将所有这些文件压缩到一个 zip 文件中。这是我正在做的所有动态。

我试过下面的代码

List<string> filestream = GenerateCSVfiles(dataSets);

//Generate CSV files
public List<string> GenerateCSVfiles(List<DataSet> dataSets)
{
List<string> filestream = new List<string>();
StringBuilder result = null;

foreach (DataSet dataSet in dataSets)
{
result = new StringBuilder();

System.Data.DataTable dataTable = dataSet.Tables[0];

foreach (DataColumn colm in dataTable.Columns)
{
result.Append(colm.ColumnName+",");
}

result.Append("\n");

//create csv file
foreach (DataRow row in dataTable.Rows)
{
for (int i = 0; i < dataTable.Columns.Count; i++)
{
result.Append(row[i].ToString());
result.Append(i == dataTable.Columns.Count - 1 ? "\n" : ",");
}
}

filestream.Add(result.ToString());
}

return filestream;
}

现在 List<filestream>我有 2 个文件数据想要创建 2 个不同的 .csv文件并创建一个 temp.gz动态文件我该怎么做?

关于 ActionResult方法 我尝试按照以下代码生成 .zip 文件,但它已损坏

return File(CompressStringToFile("temp.gz", filestream), System.Net.Mime.MediaTypeNames.Application.Zip, "temp.gz");

//zip文件生成代码

public byte[] CompressStringToFile(string fileName, List<string> filestream)
{
MemoryStream f2 = new MemoryStream();
FileStream fs = new FileStream();
GZipStream gz = new GZipStream(f2, CompressionMode.Compress, false);

foreach (string oStr in filestream)
{
byte[] b = GetBytes(oStr);
gz.Write(b, 0, b.Length);
}

return f2.ToArray();
}

Correct me to generate .zip file. (with inside 2 .csv files)

最佳答案

您不能使用 GZipStream 执行此操作。你需要一个第三方库。可能最好的是 SharpZipLib .我过去在项目中使用过它,它非常易于使用。此外,它已经存在了一段时间,因此应该非常稳定且没有错误。

关于c# - 如何在 C# 中使用 GZipStream 压缩多个文件,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/24571773/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com