如何用C#提取.gz文件中的子文件的修改时间呢?

最近再用C#解压.gz文件,用GzipStream实现了解压的功能,代码如下:

public static void Decompress(FileInfo fileToDecompress)
{
    using (FileStream originalFileStream = fileToDecompress.OpenRead())
    {
        string currentFileName = fileToDecompress.FullName;
        string newFileName = currentFileName.Remove(currentFileName.Length - fileToDecompress.Extension.Length);

        using (FileStream decompressedFileStream = File.Create(newFileName))
        {
            using (GZipStream decompressionStream = new GZipStream(originalFileStream, CompressionMode.Decompress))
            {
                decompressionStream.CopyTo(decompressedFileStream);
            }
        }
    }
}

但是解压出的原始文件的修改时间为当前时间,如何获取到原始的修改时间呢?

比如:

  • 需要解压buoydata.dat.gz,其修改时间为【2016-06-15 03:01】;
  • WinRAR打开.gz文件,发现buoydata.dat的修改时间为【2016-05-26 22:42】;
  • C#GzipStream解压.gz文件,得到buoydata.dat,其修改时间为【2022-08-10 17:31】;

所以,只能在Decompress后,将buoydata.datLastWriteTime属性设置为【2016-05-26 22:42】。

File.SetLastWriteTime(“.../buoydata.dat”, “2016-05-26 22:42”)

问题来了,如何提取到【2016-05-26 22:42】呢?