发布时间:2020-05-07 17:12:52来源:本站阅读(820)
先上代码
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
889
879
1211
1556
1063
2587
854
1460
895
720
9183
5754
5265
4887
4329
4043
3169
3092
3087
3047