【问题标题】:Setting LastWriteTime to an unzipped file's original timestamp将 LastWriteTime 设置为解压缩文件的原始时间戳
【发布时间】:2010-12-15 06:17:51
【问题描述】:

我正在使用 Sharpziplib 0.86.0 版来提取 zip 文件。它工作正常,但提取的文件使用当前日期时间。我怎样才能得到原始的 DateTime?

public static void UnzipFile(string sourcePath, string targetDirectory)
{
  try
  {
    using (ZipInputStream s = new ZipInputStream(File.OpenRead(sourcePath)))
    {
      ZipEntry theEntry;
      while ((theEntry = s.GetNextEntry()) != null)
      {
        //string directoryName = Path.GetDirectoryName(theEntry.Name);
        string fileName = Path.GetFileName(theEntry.Name);

        if (targetDirectory.Length > 0)
        {
          Directory.CreateDirectory(targetDirectory);
        }

        if (fileName != String.Empty)
        {
          using (FileStream streamWriter = File.Create(targetDirectory + fileName))
          {
            int size = 2048;
            byte[] data = new byte[2048];
            while (true)
            {
              size = s.Read(data, 0, data.Length);
              if (size > 0)
              {
                streamWriter.Write(data, 0, size);

              }
              else
              {
                break;
              }
            }
          }
        }
      }
    }
  }
  catch (Exception ex)
  {
    throw new Exception("Error unzipping file \"" + sourcePath + "\"", ex);
  }
}

【问题讨论】:

  • 有趣的大括号位置...

标签: c# sharpziplib modified-date


【解决方案1】:

每个ZipEntry 都应该有一个DateTime 属性,其中包含文件最后修改日期的时间戳。

尝试将此值与File.SetLastWriteTime 一起使用。

【讨论】:

  • @configurator: 我必须在哪里以及如何提供这个 File.SetLastWriteTime...你可以编辑我的代码
  • 写完之后关闭streamWriter。我相信你可以从这里弄清楚。
  • @configurator:File.SetLastWriteTime(sourcePath, new DateTime());对吗?
  • @bala:这会将 zip 文件设置为具有当前时间。这是你想要的吗?
  • 您可能还想设置 CreationTime 和 LastAccessedTime 属性?
猜你喜欢
  • 1970-01-01
  • 2011-02-17
  • 2011-08-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2015-11-16
  • 1970-01-01
  • 2013-12-09
相关资源
最近更新 更多