如何在C# .NET Core中获取已重命名GZIP文件的原始文件名
.NET Core中获取GZIP压缩文件的原始文件名
- .NET Core(包括.NET 7及后续版本)的
GZipStream类没有内置直接读取原始文件名的API,官方文档也未提供相关方法。 - 既然7-Zip能识别出文件名,说明该GZIP文件确实在协议头的预留字段中存储了原始文件名,你可以选择以下两种方案:
- 手动解析GZIP文件头:按照RFC 1952规范,GZIP头包含可选的额外字段块,其中就有存储文件名的部分。你需要读取文件的起始字节,按规范解析出该字段内容。
- 使用第三方开源库:比如SharpZipLib这类库,已经封装了GZIP头的解析逻辑,能直接获取原始文件名,无需自己编写解析代码。
2010年StackOverflow上的相关方案核心也是手动解析头字段,截至目前.NET官方仍未在GZipStream中添加读取文件名的功能,所以如果想省掉自定义解析的工作量,第三方库是更简便的选择。
内容的提问来源于stack exchange,提问作者danrockcoll
相关产品推荐
相关产品推荐

