我目前有一些代码读取未压缩的文件,它使用以下方法在C ++中读取文件
FILE* id = fopen("myfile.dat", "r");
获取 id 后,代码的不同部分使用 fread , fseek 等访问该文件。
我想调整我的代码,以便打开该文件的gzip版本,例如“myfile.dat.gz”无需更改太多。
理想情况下,我会为fopen实现一个包装器,称之为fopen2,它可以读取myfile.dat和myfile.dat.gz,即它应该返回一个指向FILE对象的指针,这样其余的代码就不会需要改变。
有什么建议吗?
谢谢。
PS:如果这种方法提供了解决方案,那么将内存中的整个文件解压缩就可以了。
答案 0 :(得分:2)
zlib提供fopen()
,fread()
等类似名称gzopen()
,gzread()
等,用于读取和编写gzip文件。如果文件不是gzip压缩的,它将被读取,就像f
函数一样。因此,您只需要更改zlib中的函数名称和链接。