发布时间:2020-05-07 17:12:52来源:本站阅读(937)
先上代码
private void Zip(string strDir, ZipOutputStream s, string staticFile)
{
if (strDir[strDir.Length - 1] != Path.DirectorySeparatorChar) strDir += Path.DirectorySeparatorChar;
var crc = new Crc32();
var fileAndDir = Directory.GetFileSystemEntries(strDir);
foreach (var fad in fileAndDir)
{
if (Directory.Exists(fad))
{
Zip(fad, s, staticFile);
}
else
{
var fs = File.OpenRead(fad);
var buffer = new byte[fs.Length];
fs.Read(buffer, 0, buffer.Length);
var tempFile = fad.Substring(staticFile.LastIndexOf("\\", StringComparison.Ordinal) + 1);
var entry = new ZipEntry(tempFile)
{
IsUnicodeText = true, DateTime = DateTime.Now, Size = fs.Length
};
fs.Close();
crc.Reset();
crc.Update(buffer);
entry.Crc = crc.Value;
s.PutNextEntry(entry);
s.Write(buffer, 0, buffer.Length);
}
}
}
这是修改后的。不乱码了。
开始的问题是遇到中文名字的文件夹或文件,放到压缩包就乱码了。百度到 https://blog.csdn.net/dongdongleng/article/details/7382763
IsUnicodeText = true
解决。
关键字: ICSharpCode
1835
1487
1426
860
1061
1459
926
1753
1277
978
9579
5991
5517
5113
4563
4270
3411
3331
3326
3264