我一直在研究解析第 3 方 fms 日志的函数。日志在 Gzip 中,因此我使用了适用于我们使用的任何其他 Gzip 文件的解压缩功能。
解压这些文件时,我只得到压缩文件的第一行,也不例外,它只是没有找到其余的字节,就好像第一行有一个 EOF。我尝试使用 Ionic.Zlib 而不是 System.IO.Compression 但结果是一样的。这些文件似乎没有以任何方式损坏,使用 Winrar 解压缩它们。
如果有人知道如何解决这个问题,我将不胜感激。谢谢
您可以在此处下载示例文件:http: //www.adjustyourset.tv/fms_6F9E_20120621_0001.log.gz
这是我的解压功能:
public static bool DecompressGZip(String fileRoot, String destRoot)
{
try
{
using (FileStream fileStram = new FileStream(fileRoot, FileMode.Open, FileAccess.Read))
{
using (FileStream fOutStream = new FileStream(destRoot, FileMode.Create, FileAccess.Write))
{
using (GZipStream zipStream = new GZipStream(fileStram, CompressionMode.Decompress, true))
{
byte[] buffer = new byte[4096];
int numRead;
while ((numRead = zipStream.Read(buffer, 0, buffer.Length)) != 0)
{
fOutStream.Write(buffer, 0, numRead);
}
return true;
}
}
}
}
catch (Exception ex)
{
LogUtils.SaveToLog(DateTime.Now.ToString("yyyy-MM-dd HH:mm:ss.fff"), "Eror decompressing " + fileRoot + " : " + ex.Message, Constants.systemLog, 209715200, 6);
return false;
}
}