如果文件/目录已经存在于压缩包,它将只被加在压缩包的末尾.已存在的压缩的文件和路径并没有任何更新.但是,当解压时,最后的文件将会替代第一个.结果是压缩尺寸的未优化.
如果文件/目录不存在,该文件/目录就被忽略.但一个错误文本将会发送到pear错误里.
如果文件/目录不可读,该文件/目录就被忽略.但一个错误文件将会发送到pear错误里.
如果结果文件名/路径名(在添加/删除之后或者没有这些动作)字符串多于99个字符,该文件/目录将被忽略.但一个错误文本将会发送到pear错误里.
参数 :
$p_filelist : 一组文件名和目录名,或者以单个空格分割开的文件或目录名组成的字符串.
$p_add_dir : 一个字符串,包含欲加到列表中每一个元素的已记录路路径中的一个路径.
$p_remove_dir : 一个字符串,包含一个路径,如果关联的话,则从列表中每一个元素的已记录路径删除.
返回值 :
成功返回true,错误返回false.
样例 1 :
$tar_object =
new archive_tar("tarname.tar");
[...]
$v_list[0]="dev/file.txt";
$v_list[1]="dev/data/";
(末尾'/'为可选)
$v_list[2]="log/file.log";
$tar_object->addmodify($v_list,
"install");
// 存储在压缩包中的文件形如 :
// install/file.txt
// install/data
// install/data/file1.txt
// install/data/... 所有data下的文件和子目录/
// install/file.log
样例 2 :
$tar_object =
new archive_tar("tarname.tar");
[...]
$v_list[0]="dev/file.txt";
$v_list[1]="dev/data/";
(末尾'/'为可选)
$v_list[2]="log/file.log";
$tar_object->addmodify($v_list,
"install", "dev");
// 存储在压缩包中的文件形如 :
// install/file.txt
// install/data
// install/data/file1.txt
// install/data/... 所有data下的文件和子目录/
// install/log/file.log
如何工作 :
如果压缩包不存在,则创建并加入文件.
如果压缩包确实存在但未被压缩,则打开它,跳到组后512字节空区块(tar脚部),并在该点加入文件.
如果压缩包确实存在且被压缩,将会创建一个临时拷贝文件.这个临时文件是以'gzip'方式一块接着一块直至最终空区块读取的结果.新的文件此时被加到压缩文件中.
文件的添加是通过遍历文件/目录列表,然后加进每个文件,以一个递规的方式遍历目录.每一次一个路径都需要添加/删除,在在压缩包写入文件头部之前完成这项工作.
方法 : add($p_filelist)
描述 :
该方法把$p_filelist里列出的文件/目录加入到已经存在的压缩包中去.如果压缩包尚未存在,则创建之.
$p_filelist参数可以是一组字符串,每个字符串代表一个文件名或者目录名,如果需要,则要带上它们的路径.该参数也可以是以空格分割开的文件或目录名组成的字符串.
参阅addmodify()方法查看细节和限制.
参数 :
$p_filelist : 一组文件名和目录名,或者以单个空格分割开的文件或目录名组成的字符串.
返回值 :
成功返回true,错误返回false.