zip 文件似乎已在我的驱动器上成功创建,并且包含我在filePaths[]
问题是,尽管将密码设置为“你好”,但当我尝试解压缩文件时,它会说密码不正确。
/// <summary>
/// Creates a zip file
/// </summary>
/// <param name="filePaths">An array of files to add to the zip file</param>
/// <param name="password">Password of zip file. Set to null to ignore</param>
/// <param name="outputName">The name of the outputted zip file (including full path) </param>
/// <returns></returns>
public string CreateZip(string[] filePaths, string password, string outputName)
{
outputName += ".zip";
using (var file = ZipFile.Create(outputName))
{
file.BeginUpdate();
filePaths.ToList().ForEach(x =>
{
if (Path.HasExtension(x))
{
file.Add(x);
}
else if (!Path.HasExtension(x) && Directory.Exists(x))
{
Directory.GetFiles(x, "*.*", SearchOption.AllDirectories).ToList().ForEach(file.Add);
}
});
file.Password = password;
file.CommitUpdate();
file.Close();
}
return outputName;
}
有趣的是,这个问题只发生在 zip 中的文件大小为 0 字节(它是一个空的 xml 文件)时。
如果我将内容添加到 .xml 文件并尝试使用我的函数对其进行压缩,则它根本不会要求输入密码,尽管在代码中指定了密码。(更有趣的是它在重置我的计算机后要求我输入密码,并且它工作正常,但是随后删除了所有文件并再次尝试它在解压缩时不要求输入密码)