最近再用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.dat的LastWriteTime属性设置为【2016-05-26 22:42】。
File.SetLastWriteTime(“.../buoydata.dat”, “2016-05-26 22:42”)
问题来了,如何提取到【2016-05-26 22:42】呢?