4

我正在尝试使用 GZipStream 使用 c# 创建一个 gz 文件。我的问题是我有一个包含字符串的列表。我需要创建一个受密码保护的 zip 文件,并在其中放入一个包含字符串的文本文件。
我不想创建文本文件,然后压缩它,然后删除文本文件。我想直接创建一个包含文本文件的受密码保护的 zip 文件。
有什么帮助吗?

编辑:我已经完成了拉链的工作。现在我需要为创建的 zip 文件设置一个通行证。有什么帮助吗?

4

3 回答 3

3

只需创建一个StreamWriter包装您的GZipStream, 并向其写入文本。

于 2010-03-24T18:43:03.287 回答
3

您应该考虑使用SharpZipLib。它是一个开源的.net 压缩库。它包括有关如何创建.gz文件的示例.zip。请注意,您可以直接写入 .zip 文件。您不需要先在磁盘上创建中间文件。

编辑:(响应您的编辑)SharpZipLib 也支持 zip 密码。

于 2010-03-24T18:47:15.487 回答
0

GZipStream 可用于创建 .gz 文件,但这与 .zip 文件不同。

要创建受密码保护的 zip 文件,我认为您需要去第三方库。

以下是使用DotNetZip的方法...

var sb = new System.Text.StringBuilder();
sb.Append("This is the text file...");
foreach (var item in listOfStrings)
    sb.Append(item);

// sb now contains all the content that will be placed into
// the text file entry inside the zip.

using (var zip = new Ionic.Zip.ZipFile())
{
    // set the password on the zip (implicitly enables encryption)
    zip.Password = "Whatever.You.Like!!"; 
    // optional: select strong encryption
    zip.Encryption = Ionic.Zip.EncryptionAlgorithm.WinZipAes256;
    // add an entry to the zip, specify a name, specify string content
    zip.AddEntry("NameOfFile.txt", sb.ToString());
    // save the file
    zip.Save("MyFile.zip");
}
于 2010-03-25T15:17:03.927 回答