c# - Zip 文件导致的 SharpZipLib 问题\而不是/

标签 c# zip sharpziplib

我有一大堆 Legacy zip 压缩不正确。

文件保存在 zip 中,因此它们是文件夹\文件名而不是文件夹/文件名。

意思是这样的代码:

using (ZipFile zipFile = new ZipFile(@"zippath.zip"))
{ 
     for (int i = 0; i < zipFile.Count; i++)
     {
          var entry = zipFile[i];
          zipFile.BeginUpdate();
          zipFile.Delete(entry);
          zipFile.CommitUpdate();

...

正在扔一个

Cannot find entry to delete

这是一个发现的已知问题 here但不幸的是,我无法控制 zip 的制作方式,而且我需要使用多年的 zip 文件。有没有一种方法可以在使用前修复删除语句或修复(在 C# 中)zip 文件?

谢谢!

最佳答案

ZipEntry 中有一个公共(public)函数可以为您清理名称。 “ZipEntry.CleanName(您的字符串)”。当您既要添加条目又要删除条目时,请调用此电话。 注意:如果您将此用于文件路径,即使 CleanName 函数将“\”替换为“/”,它也会正确解释 zip 文件中的路径

**

ADDING ZIPENTRY

**

zipEntryKey = file.FullName.Replace(file.Directory.Root.ToString(), string.Empty);
zipEntryKey = ZipEntry.CleanName(zipEntryKey);
ZipEntry entry = new ZipEntry(zipEntryKey);
entry.DateTime = file.LastWriteTime;


Stream fileStream = Minify(file);
byte[] buffer = new byte[fileStream.Length];
entry.Size = fileStream.Length;
fileStream.Read(buffer, 0, buffer.Length);
fileStream.Close();

zipStream.PutNextEntry(entry);
zipStream.Write(buffer, 0, buffer.Length);
zipStream.CloseEntry();

DELETING ZIPENTRY

zipEntryKey = file.FullName.Replace(file.Directory.Root.ToString(), string.Empty);
zipEntryKey = ZipEntry.CleanName(zipEntryKey);

if (existingZip.FindEntry(zipEntryKey, true) > -1)
{
    existingZip.BeginUpdate();
    ZipEntry Existing = existingZip[existingZip.FindEntry(zipEntryKey, true)];
    existingZip.Delete(Existing);
    existingZip.CommitUpdate();
}

关于c# - Zip 文件导致的 SharpZipLib 问题\而不是/,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/5304775/

相关文章:

Perl:IO::Uncompress::Unzip:获取 zip 文件的最后修改日期

c# - sharpziplib + 提取单个文件

c# - SharpZipLib 的基础知识。我错过了什么?

c# - 如何在 Visual Studio 2008/2010 中注释方法

c# - 来自 ASP.NET MVC 2 和 FormsAuthentication 的 Web 服务身份验证

c# - 如何在C#中模拟浏览器HTTP POST请求并捕获结果

java - 如何在 java 中创建多部分压缩的 zip 文件

c# - 如何在 Windows 窗体中为标签添加边框?

android - 是否可以在 Android 上显示 svgz?

c# - 适用于 Windows Mobile 的 gzip 工具比 SharpZipLib 更好?