fopen函数打开压缩文件问题

netxuning 2012-04-16 02:33:53
我希望直接用fopen函数直接打开压缩包内的一个文件,
如果是zip格式,则可用以下方法打开
$fp = fopen("zip:///tmp/12.zip#myfilein.txt", "r");

但同样的方法便无法操作gzip格式的压缩包?
每当如下如下方式打开的时候,都被告知 failed to open stream: operation failed 错误
fopen("compress.zlib:///tmp/12.tar.gz#myfilein.txt", "r");

ps:仔细查了很多遍,压缩包的路径以及压缩包内部的那个文件都是存在的,想知道这种方法针对gz格式的压缩包是不可行呢?还是我用错了方法?
...全文
705 7 打赏 收藏 转发到动态 举报
写回复
用AI写文章
7 条回复
切换为时间正序
请发表友善的回复…
发表回复
liyouchao0626 2012-10-30
  • 打赏
  • 举报
回复
用gzopen吧,直接打开文件,再用gzread读取,用gzwrite写入
netxuning 2012-04-17
  • 打赏
  • 举报
回复
[Quote=引用 5 楼 的回复:]

那么你没有尝试过 zlib 函数组吗? 他是可以操作 .gz 文件的
[/Quote]

试过了,最开始用得就是,对于将若干文件压缩而成的.gz文件,这些函数只能读出tar文件的内容,而不像ZipArchive类能像处理目录一样在zip文件内添加目录、增删文件等。

这是我目前只能用zip格式的原因。如果也能做到ZipArchive一样,就用.gz或.bz2格式 。。。
xuzuning 2012-04-17
  • 打赏
  • 举报
回复
那么你没有尝试过 zlib 函数组吗? 他是可以操作 .gz 文件的
netxuning 2012-04-17
  • 打赏
  • 举报
回复
[Quote=引用 2 楼 的回复:]

你要分析zip编码吗?不是有相关的类操作压缩文件
[/Quote]

不是要分析编码,是希望在php程序中够访问到压缩包中的文件
netxuning 2012-04-17
  • 打赏
  • 举报
回复
[Quote=引用 1 楼 的回复:]

不是还有 compress.bzip2:// 吗?
试试

可能编码格式上有差异
[/Quote]

徐老大你好,compress.bzip2也试了,跟zlib的结果是一样的,我觉得这样不行是有他的道理的,
不同于zip格式,gz和bz2对目录的压缩都是先用tar打包然后再压缩tar文件,也就是gz和bz2不借助tar的情况下只能压缩文件。
zip对于目录则是打包且压缩,并且内建了目录结构,这样便可以用路径的方法直接访问到压缩进去的文件。

以上是我的理解,如不对请斧正。

另外问一下,有没有别的办法解决我的问题?因为bz2和gz压缩效率相对zip大不少,我还是倾向于使用这两种格式,但就是没有找到方法直接定位压缩进去的文件并对其进行操作。

谢谢
coder 2012-04-16
  • 打赏
  • 举报
回复
你要分析zip编码吗?不是有相关的类操作压缩文件
xuzuning 2012-04-16
  • 打赏
  • 举报
回复
不是还有 compress.bzip2:// 吗?
试试

可能编码格式上有差异


21,887

社区成员

发帖
与我相关
我的任务
社区描述
从PHP安装配置,PHP入门,PHP基础到PHP应用
社区管理员
  • 基础编程社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧