【问题标题】:.net ZipFile class: How to modify a text file within an archive?.net ZipFile 类:如何修改存档中的文本文件?
【发布时间】:2019-07-10 19:06:53
【问题描述】:

有人知道如何使用 .net 的 ZipFile 类修改 zip 存档中的文本文件吗?我的意思是不解压缩所有内容,修改并再次压缩。到目前为止读取文件很容易:

using (var zip = ZipFile.Open("ExcelWorkbookWithMacros.xlsm", ZipArchiveMode.Update))
{
    var entry = zip.GetEntry("xl/_rels/workbook.xml.rels");
    if (entry != null)
    {
        var tempFile = Path.GetTempFileName();
        entry.ExtractToFile(tempFile, true);
        var content = File.ReadAllText(tempFile);

        content = content.Replace("xxx", ""); // THIS IS WHAT I NEED TO DO

        >> How to save back the archive? <<
    }
}

【问题讨论】:

    标签: .net zipfile


    【解决方案1】:

    无需解压文件即可。你可以这样做:

    string entryName = "some entry";
    string contents = "";
    var entry = zip.GetEntry(entryName);
    if (entry != null)
    {
      using(StreamReader streamReader = new StreamReader(entry.Open()))
      {
        contents = streamReader.ReadToEnd();
      }
    
      contents = contents.Replace("xxx", "");
      entry.Delete();
      entry = zip.CreateEntry(entryName);
    
      using(StreamWriter streamWriter = new StreamWriter(entry.Open()))
      {
        streamWriter.Write(contents);
      }
    }
    

    【讨论】:

      猜你喜欢
      • 2012-07-15
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2010-09-12
      相关资源
      最近更新 更多