项目中使用ICSharpCode.SharpZipLib.Zip库进行解压,之前自动更新程序是.NET 4.5的,升级到.NET 8后,发现解压升级包里面的中文文件名是乱码了,经过一番摸索,增加一句代码可以解决乱码问题:
Encoding.RegisterProvider(CodePagesEncodingProvider.Instance);
public static bool DeCompressionZip(string _depositPath, string _floderPath)
if (!Directory.Exists(_floderPath))
Directory.CreateDirectory(_floderPath);
Encoding.RegisterProvider(CodePagesEncodingProvider.Instance);// 解决文件名中文乱码
using (ZipInputStream s = new ZipInputStream(File.OpenRead(_depositPath)))
ZipEntry ze;
while ((ze = s.GetNextEntry()) != null) //如果解压完ze则是null
if (ze.IsFile)//压缩zipINputStream里面存的都是文件。带文件夹的文件名字是文件夹\\文件名
string zeName = ze.Name;
string directoryName = Path.GetDirectoryName(zeName);
// create directory
if (!string.IsNullOrEmpty(directoryName) && directoryName.Length > 0)
directoryName = Path.Combine(_floderPath, directoryName);
if (!Directory.Exists(directoryName))
Directory.CreateDirectory(directoryName);
string fileName = Path.GetFileName(zeName);
if (!string.IsNullOrEmpty(fileName))
using (FileStream streamWriter = File.OpenWrite(Path.Combine(_floderPath, zeName)))
int size = 2048;
byte[] data = new byte[2048];
while (true)
size = s.Read(data, 0, data.Length);
if (size <= 0)
break;
streamWriter.Write(data, 0, size);
return true;
2得到
zip
文件对象之后。while((num=
zip
.read(byte_s,0,byte_s.length))>-1){//通过read
方法
来读取文件内容。原文链接https//blog.csdn
.net
/yumolan4325/article/details/79019580。如String
zip
FileName="C/Users/xucla/Desktop/CO60.
zip
";如String
zip
FileName="C/Users/xucla/Desktop/CO60.
zip
";...
void putNextEntry(
Zip
Entry e)
开始写入新的
ZIP
文件条目并将流定位到条目数据的开始处。
Zip
Entry(String name) //test/mm.jpg /test/a.t...
string filePath = @"D:\Program Files\1.rar";//绝对路径
//解压目录
string virtualPath = string.Format("{0}/{1}", "Decompress", DateTime.Now.ToString("yyyyMMdd"));
string F...