我正在尝试使用 GZipStream 使用 c# 创建一个 gz 文件。我的问题是我有一个包含字符串的列表。我需要创建一个受密码保护的 zip 文件,并在其中放入一个包含字符串的文本文件。
我不想创建文本文件,然后压缩它,然后删除文本文件。我想直接创建一个包含文本文件的受密码保护的 zip 文件。
有什么帮助吗?
编辑:我已经完成了拉链的工作。现在我需要为创建的 zip 文件设置一个通行证。有什么帮助吗?
我正在尝试使用 GZipStream 使用 c# 创建一个 gz 文件。我的问题是我有一个包含字符串的列表。我需要创建一个受密码保护的 zip 文件,并在其中放入一个包含字符串的文本文件。
我不想创建文本文件,然后压缩它,然后删除文本文件。我想直接创建一个包含文本文件的受密码保护的 zip 文件。
有什么帮助吗?
编辑:我已经完成了拉链的工作。现在我需要为创建的 zip 文件设置一个通行证。有什么帮助吗?
只需创建一个StreamWriter
包装您的GZipStream
, 并向其写入文本。
您应该考虑使用SharpZipLib。它是一个开源的.net 压缩库。它包括有关如何创建.gz
文件的示例.zip
。请注意,您可以直接写入 .zip 文件。您不需要先在磁盘上创建中间文件。
编辑:(响应您的编辑)SharpZipLib 也支持 zip 密码。
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");
}