读取和写入压缩的gzip文件
读取和写入压缩的gzip文件的方式与读取和写入普通文件的方式几乎相同。主要区别是使用一些压缩和解压缩数据的特殊功能。而是使用fopen()来打开文件,而是使用来打开压缩文件gzopen()。许多文件访问功能都是这种情况,尽管您应该意识到它们的功能并不完全相同。以下是一些使用中的压缩功能的示例。要从压缩文件中读取,请使用以下脚本。
//从文件读取 $inputfile = 'text.gz'; $filecontents = ''; $ifh = gzopen($inputfile, 'r'); while ( $line = gzgets($ifh, 1024) ) { $filecontents .= $line; } echo $filecontents; gzclose($ifh);要写入压缩文件,请使用以下脚本。
//写入无限制文件 $inputfile = 'text.gz'; $string = 'lalalala'; $filecontents = ''; $ifh = gzopen($inputfile, 'r'); while ( $line = gzgets($ifh, 1024) ) { $filecontents .= $line; } gzclose($ifh); $ifh = gzopen($inputfile, 'w'); if ( !gzwrite($ifh, $filecontents.$string) ) { //写失败 } gzclose($ifh);要压缩普通文件,请使用以下脚本。
//压缩 $inputfile = 'text.txt'; $outputfile = 'text.gz'; //打开文件 $ifh = fopen($inputfile, 'rb'); $ofh = fopen($outputfile, 'wb'); //编码字符串 $encoded = gzencode(fread($ifh, filesize($inputfile))); if ( !fwrite($ofh, $encoded) ) { //写失败 } //关闭档案 fclose($ifh); fclose($ofh);要解压缩gzip文件,请使用以下脚本。
//解压 $inputfile = 'text.gz'; $outputfile = 'text.txt'; $ofh = fopen($outputfile, 'wb'); $string = ''; $ifh = gzopen($inputfile, 'r'); while ( $line = gzgets($ifh, 1024) ) { $string .= $line; } if ( !fwrite($ofh, $string) ) { //写失败 } echo $string; gzclose($ifh); fclose($ofh);请注意,从这些示例中,您可以使用以下命令打开压缩文件:fopen(),但是您需要使用'b'标志来指示要以二进制格式打开文件来打开文件。基本上,以下两个调用非常相同。
$ifh = gzopen($inputfile, 'r'); $ifh = fopen($inputfile, 'rb');该gzopen()功能还可以将其他一些参数用作模式。这些包括压缩级别(例如wb1或wb9)或策略。该策略可以是f(用于过滤)(用作wb9f),也可以是h(仅用于霍夫曼压缩)(用作wb1h)。