getfilelist($dir); } if ((!empty($dir))&&(!is_array($dir))&&(file_exists($dir))) chdir($dir); else chdir($curdir); if (count($filelist)>0) { foreach($filelist as $filename) { if (is_file($filename)) { $fd = fopen ($filename, r); $content = fread ($fd, filesize ($filename)); fclose ($fd); if (is_array($dir)) $filename = basename($filename); $this -> addfile($content, $filename); } } $out = $this -> file(); chdir($curdir); $fp = fopen($zipfilename, w); fwrite($fp, $out, strlen($out)); fclose($fp); } return 1; } else return 0;}function getfilelist($dir){ if (file_exists($dir)) { $args = func_get_args(); $pref = $args[1]; $dh = opendir($dir); while($files = readdir($dh)) { if (($files!=.)&&($files!=..)) { if (is_dir($dir.$files)) { $curdir = getcwd(); chdir($dir.$files); $file = array_merge($file, $this -> getfilelist(, $pref$files/)); chdir($curdir); } else $file[]=$pref.$files; } } closedir($dh); } return $file;}var $datasec = array();var $ctrl_dir = array();var $eof_ctrl_dir = x50x4bx05x06x00x00x00x00;var $old_offset = 0;/** * converts an unix timestamp to a four byte dos date and time format (date * in high two bytes, time in low two bytes allowing magnitude comparison). * * @param integer the current unix timestamp * * @return integer the current date in a four byte dos format * * @access private */function unix2dostime($unixtime = 0) { $timearray = ($unixtime == 0) ? getdate() : getdate($unixtime); if ($timearray['year'] < 1980) { $timearray['year'] = 1980; $timearray['mon'] = 1; $timearray['mday'] = 1; $timearray['hours'] = 0; $timearray['minutes'] = 0; $timearray['seconds'] = 0; } // end if return (($timearray['year'] - 1980) << 25) | ($timearray['mon'] << 21) | ($timearray['mday'] << 16) | ($timearray['hours']
使用方法:
zip(, out1.zip); //添加当前目录和子目录下的所有档案//方法二:$files=array('1.txt','gb.txt');$files[]='5.txt';$z -> zip($files, out2.zip); //添加文件列表//方法三:$z -> zip(/usr/local/sext/, out3.zip); //添加指定目录?>
希望本文所述对大家的php程序设计有所帮助。
