分享
 
 
 

PEAR Archive_Tar类的中文文档

王朝php·作者佚名  2006-01-09
窄屏简体版  字體: |||超大  

PEAR Archive_Tar类中文文档

===================================

最后更新(译注:英文文档) : 2001-08-15

总览 :

----------

Archive_Tar类帮助创建和管理由GNU ZIP压缩或者非GNU ZIP压缩的GNU TAR格式文件.

该类提供了一些基本函数,象创建压缩包,在压缩包里加入文件,从压缩包中解出文件,以及列出压缩包内容.

它也提供了一些先进的函数允许用路径操作的方式添加和解压文件(译注:就是可以在添加和解压过程中,设定路径).

样例 :

--------

// ----- 创建对象(解压缩)

$tar_object =

new Archive_Tar("tarname.tar");

$tar_object->setErrorHandling(PEAR_ERROR_PRINT);

// ----- 创建压缩包

$v_list[0]="file.txt";

$v_list[1]="data/";

$v_list[2]="file.log";

$tar_object->create($v_list);

// ----- 加入文件

$v_list[0]="dev/file.txt";

$v_list[1]="dev/data/";

$v_list[2]="log/file.log";

$tar_object->add($v_list);

// ----- 加入更多的文件

$tar_object->add("release/newfile.log

release/readme.txt");

// ----- 列出内容

if (($v_list = $tar_object->listContent())

!= 0)

for ($i=0;

$i<sizeof($v_list);

$i++)

{

echo "Filename

:'".$v_list[$i][filename]."'<br>";

echo " .size

:'".$v_list[$i][size]."'<br>";

echo " .mtime

:'".$v_list[$i][mtime]."'

(".date("l

dS of F Y h:i:s A", $v_list[$i][mtime]).")<br>";

echo " .mode

:'".$v_list[$i][mode]."'<br>";

echo " .uid

:'".$v_list[$i][uid]."'<br>";

echo " .gid

:'".$v_list[$i][gid]."'<br>";

echo " .typeflag

:'".$v_list[$i][typeflag]."'<br>";

}

// ----- 解压缩到目录"install"

$tar_object->extract("install");

公共参数 :

------------------

公共方法 :

----------------

方法 : Archive_Tar($p_tarname, $p_compress = null)

描述 :

Archive_Tar类构造器.这个构造器的作用只是声明一个新的Archive_Tar对象,以tar文件的名称与之关联.

如果设置了compress参数,tar文件就会被读取或者被创建一个gzip或bz2压缩TAR文件.

参数 :

$p_tarname : A valid filename for the tar archive file.

$p_compress : 可以为null, 'gz' 或者 'bz2',出于兼容性上的原因,它也可以为true.该参数指明是否需要gzip或者bz2压缩.

返回值 :

Archive_Tar对象.

样例 :

$tar_object =

new Archive_Tar("tarname.tar");

$tar_object_compressed =

new Archive_Tar("tarname.tgz",

true);

如何工作 :

初始化对象.

方法 : create($p_filelist)

描述 :

该方法创建压缩文件并加入$p_filelist所列的文件和目录.

如果文件是存在且可写的,那么将会被新的tar文件所替代.毕竟这是一个创建动作而不是添加动作.反之,如果文件存在且为只读或者是一个目录,那么它将不会被替代.该方法即返回false和一个PEAR错误文本.

$p_filelist参数可以是一组字符串,每个字符串代表一个文件名或者目录名,如果需要,则要带上它们的路径.该参数也可以是以空格分割开的文件或目录名组成的字符串.

参阅createModify()方法得到更多的细节.

参数 :

$p_filelist : 一组文件名和目录名,或者以单个空格分割开的文件或目录名组成的字符串.

返回值 :

成功返回true,错误返回false.

样例 1 :

$tar_object =

new Archive_Tar("tarname.tar");

$tar_object->setErrorHandling(PEAR_ERROR_PRINT); //

可选的错误处理

$v_list[0]="file.txt";

$v_list[1]="data/";

(末尾'/'为可选)

$v_list[2]="file.log";

$tar_object->create($v_list);

?> 样例 2 :

<?php

$tar_object = new Archive_Tar("tarname.tar");

$tar_object->setErrorHandling(PEAR_ERROR_PRINT); //

可选的错误处理

$tar_object->create("file.txt

data/ file.log");

如何工作 :

用正确的参数调用createModify()方法.

方法 : createModify($p_filelist, $p_add_dir, $p_remove_dir = "")

描述 :

该方法创建一个压缩文件,并加入$p_filelist所列出的文件/目录.

如果文件是存在且可写的,那么将会被新的tar文件所替代.毕竟这是一个创建动作而不是添加动作.反之,如果文件存在且为只读或者是一个目录,那么它将不会被替代.该方法即返回false和一个PEAR错误文本.

$p_filelist参数可以是一组字符串,每个字符串代表一个文件名或者目录名,如果需要,则要带上它们的路径.该参数也可以是以空格分割开的文件或目录名组成的字符串.

如果存在的话,在$p_remove_dir中声明的路径将从每个列出来的文件/目录已记录路径中删除.默认没有任何东西被删除(空路径"").

在$p_add_dir中声明的路径将会加在每一个列出来的文件/目录的已记录路径的开始.但是它也可设为空"".路径的添加将会在路径的删除之前(译注:即先去掉$p_remove_dir,再加上$p_add_dir).

这种路径的添加/删除能力使得用户可以在一个不同的路径中准备好解压用的压缩包,而不是源文件所在.

参阅addModify()方法查看文件添加的特性.

参数 :

$p_filelist : 一组文件名和目录名,或者以单个空格分割开的文件或目录名组成的字符串.

$p_add_dir : 一个字符串,包含欲加到列表中每一个元素的已记录路路径中的一个路径.

$p_remove_dir : 一个字符串,包含一个路径,如果关联的话,则从列表中每一个元素的已记录路径删除.

返回值 :

成功返回true,错误返回false.

样例 1 :

$tar_object =

new Archive_Tar("tarname.tar");

$tar_object->setErrorHandling(PEAR_ERROR_PRINT); //

可选的错误处理

$v_list[0]="file.txt";

$v_list[1]="data/";

(末尾'/'为可选)

$v_list[2]="file.log";

$tar_object->createModify($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");

$tar_object->setErrorHandling(PEAR_ERROR_PRINT); //

可选的错误处理

$v_list[0]="dev/file.txt";

$v_list[1]="dev/data/";

(末尾'/'为可选)

$v_list[2]="log/file.log";

$tar_object->createModify($v_list,

"install", "dev");

// 存储在压缩包中的文件形如 :

// install/file.txt

// install/data

// install/data/file1.txt

// install/data/... 所有data下的文件和子目录/

// install/log/file.log

如何工作 :

以可写的模式打开文件(如果已经存在,则擦除),调用_addList()方法,在一个空压缩包加入文件,加入尾部(512字节的区块),关闭tar文件.

方法 : addModify($p_filelist, $p_add_dir, $p_remove_dir="")

描述 :

该方法在已存在的压缩包的末尾加入$p_filelist所列的文件/目录.如果压缩包尚未存在,那么就被创建.

$p_filelist参数可以是一组字符串,每个字符串代表一个文件名或者目录名,如果需要,则要带上它们的路径.该参数也可以是以空格分割开的文件或目录名组成的字符串.

如果存在的话,在$p_remove_dir中声明的路径将从每个列出来的文件/目录已记录路径中删除.默认没有任何东西被删除(空路径"").

在$p_add_dir中声明的路径将会加在每一个列出来的文件/目录的已记录路径的开始.但是它也可设为空"".路径的添加将会在路径的删除之前(译注:即先去掉$p_remove_dir,再加上$p_add_dir).

这种路径的添加/删除能力使得用户可以在一个不同的路径中准备好解压用的压缩包,而不是源文件所在.

如果文件/目录已经存在于压缩包,它将只被加在压缩包的末尾.已存在的压缩的文件和路径并没有任何更新.但是,当解压时,最后的文件将会替代第一个.结果是压缩尺寸的未优化.

如果文件/目录不存在,该文件/目录就被忽略.但一个错误文本将会发送到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.

样例 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->add($v_list);

?> 样例 2 :

<?php

$tar_object = new Archive_Tar("tarname.tgz",

true);

[...]

$v_list[0]="dev/file.txt";

$v_list[1]="dev/data/";

(末尾'/'为可选)

$v_list[2]="log/file.log";

$tar_object->add($v_list);

如何工作 :

用正确的参数简单地调用addModify()方法.

方法 : addString($p_filename, $p_string)

描述 :

该方法在已存在压缩包末尾以文件的形式加入一单个字符串.如果压缩包尚未存在,则创建之.

参数 :

$p_filename : 一个字符串,包含将与该字符串相关联的文件全部路径.

$p_string : 加入到压缩包文件中的内容.

返回值 :

成功返回true,错误返回false.

样例 1 :

$v_archive =

& new Archive_Tar($p_filename);

$v_archive->setErrorHandling(PEAR_ERROR_PRINT);

$v_result =

$v_archive->addString('data/test.txt',

'这是字符串文本');

方法 : extract($p_path = "")

描述 :

该方法在一个由$p_path声明的目录中解出所有压缩包里的内容.$p_path是可选的,如果没有设置,压缩包就在当前目录被解压.

当解压一个文件时,如果目录路径不存在,则该目录路径会被创建.

查阅extractModify()查看细节和限制.

参数 :

$p_path : 可选的路径,为文件/目录需要解压到的地方.

返回值 :

成功返回true,错误返回false.

样例 :

$tar_object =

new Archive_Tar("tarname.tar");

$tar_object->extract();

如何工作 :

用恰当的参数简单的调用extractModify()方法.

方法 : extractModify($p_path, $p_remove_path)

描述 :

该方法在由$p_path声明的目录里解出压缩包所有内容.如果是关联的,文件/目录的已记录路径可以在文件/路径开头因删除了$p_remove_path路径而改变.

当解压一个文件时,如果目录路径不存在,则创建之.

当解压一个文件时,如果文件已经存在,那么不必查看最后修改日期即会被替代.

当解压一个文件时,如果一个文件已经存在且为写保护,则解压会被中止.

当解压一个文件时,如果具有同样名称的目录已经存在,则解压会被中止.

当解压一个目录时,如果具有同样名称的文件已经存在,则解压会被中止.

当解压一个文件/目录时,如果目标目录存在且为写保护,或者不存在但不能创建,则解压会被中止.

如果在解压之后,一个已解出文件与存储文件尺寸不一致,则解压会被中止.

当解压被中止时,一个PEAR文本会被发送,并且返回false.但是结果可能时需要手工清理的一部分解出的东西.

参数 :

$p_path : 为文件/目录需要解压到的地方.

$p_remove_path : 已记录路径的一部分,如果出现在文件/目录路径的开头,就可以被删除.

返回值 :

成功返回true,错误返回false.

样例 :

// 设想一个含下列文件的tarname.tar

:

// dev/data/file.txt

// dev/data/log.txt

// readme.txt

$tar_object =

new Archive_Tar("tarname.tar");

$tar_object->extractModify("install",

"dev");

// 文件将被解压到那里(译注:install目录下) :

// install/data/file.txt

// install/data/log.txt

// install/readme.txt

如何工作 :

打开压缩包,调用一个可以解压压缩包一部分或全部的更通用的函数.

查阅extractList()方法查看更多细节.

方法 : extractInString($p_filename)

描述 :

该方法从压缩包中解出一个由$p_filename声明的文件.

返回一个含文件内容的字符串或者错误时返回NULL.

参数 :

$p_filename : 要解出内容到一字符串的路径.

返回值 :

一个含文件内容的字符串或者NULL.

样例 :

// 设想一个含下列文件的tarname.tar

:

// dev/data/file.txt

// dev/data/log.txt

// dev/readme.txt

$v_archive =

& new Archive_Tar('tarname.tar');

$v_archive->setErrorHandling(PEAR_ERROR_PRINT);

$v_string =

$v_archive->extractInString('dev/readme.txt');

echo $v_string;

方法 : listContent()

描述 :

该方法返回一列数组(译注:即为二维数组),用来描述每一个在压缩包里的文件/目录.

该数组没有被排序,所以它可以示意文件在压缩包中的位置.

文件的信息有:

$file[filename] : 文件/目录的名称和路径.

$file[mode] : 文件权限(为fileperms()的结果)

$file[uid] : 用户id

$file[gid] : 用户组id

$file[size] : 文件尺寸

$file[mtime] : 最后修改时间(为filemtime()的结果)

$file[typeflag] : 对文件来说为"", 对目录来说为"5"

参数 :

返回值 :

一列数组或者错误返回0.

样例 :

$tar_object =

new Archive_Tar("tarname.tar");

if (($v_list = $tar_object->listContent())

!= 0)

for ($i=0;

$i<sizeof($v_list);

$i++)

{

echo "Filename

:'".$v_list[$i][filename]."'<br>";

echo " .size

:'".$v_list[$i][size]."'<br>";

echo " .mtime

:'".$v_list[$i][mtime]."'

(".

date("l

dS of F Y h:i:s A", $v_list[$i][mtime]).")<br>";

echo " .mode

:'".$v_list[$i][mode]."'<br>";

echo " .uid

:'".$v_list[$i][uid]."'<br>";

echo " .gid

:'".$v_list[$i][gid]."'<br>";

echo " .typeflag

:'".$v_list[$i][typeflag]."'<br>";

}

如何工作 :

和extract调用同样的函数,但是带一个标记只遍历压缩包,并不解出文件.

方法 : extractList($p_filelist, $p_path = "", $p_remove_path = "")

描述 :

该方法只从压缩包中解出在$p_filelist声明的文件.这些文件被解到当前目录或者到一个由可选参数$p_path声明的目录里.

如果声明了$p_remove_path,那么可以和它在extractModify()方法里的用法一样应用.

参数 :

$p_filelist : 一组文件名和目录名,或者以单个空格分割开的文件或目录名组成的字符串.

$p_path : 为文件/目录需要解压到的地方.

$p_remove_path : 已记录路径的一部分,如果出现在文件/目录路径的开头,就可以被删除.

返回值 :

成功返回true,错误返回false.

样例 :

// 设想一个含下列文件的tarname.tar

:

// dev/data/file.txt

// dev/data/log.txt

// readme.txt

$tar_object =

new Archive_Tar("tarname.tar");

$tar_object->extractList("dev/data/file.txt

readme.txt", "install",

"dev");

// 文件将被解压到那里(译注:install目录下) :

// install/data/file.txt

// install/readme.txt

如何工作 :

遍历压缩包,只解压出列表中出现的文件.

 
 
 
免责声明:本文为网络用户发布,其观点仅代表作者个人观点,与本站无关,本站仅提供信息存储服务。文中陈述内容未经本站证实,其真实性、完整性、及时性本站不作任何保证或承诺,请读者仅作参考,并请自行核实相关内容。
2023年上半年GDP全球前十五强
 百态   2023-10-24
美众议院议长启动对拜登的弹劾调查
 百态   2023-09-13
上海、济南、武汉等多地出现不明坠落物
 探索   2023-09-06
印度或要将国名改为“巴拉特”
 百态   2023-09-06
男子为女友送行,买票不登机被捕
 百态   2023-08-20
手机地震预警功能怎么开?
 干货   2023-08-06
女子4年卖2套房花700多万做美容:不但没变美脸,面部还出现变形
 百态   2023-08-04
住户一楼被水淹 还冲来8头猪
 百态   2023-07-31
女子体内爬出大量瓜子状活虫
 百态   2023-07-25
地球连续35年收到神秘规律性信号,网友:不要回答!
 探索   2023-07-21
全球镓价格本周大涨27%
 探索   2023-07-09
钱都流向了那些不缺钱的人,苦都留给了能吃苦的人
 探索   2023-07-02
倩女手游刀客魅者强控制(强混乱强眩晕强睡眠)和对应控制抗性的关系
 百态   2020-08-20
美国5月9日最新疫情:美国确诊人数突破131万
 百态   2020-05-09
荷兰政府宣布将集体辞职
 干货   2020-04-30
倩女幽魂手游师徒任务情义春秋猜成语答案逍遥观:鹏程万里
 干货   2019-11-12
倩女幽魂手游师徒任务情义春秋猜成语答案神机营:射石饮羽
 干货   2019-11-12
倩女幽魂手游师徒任务情义春秋猜成语答案昆仑山:拔刀相助
 干货   2019-11-12
倩女幽魂手游师徒任务情义春秋猜成语答案天工阁:鬼斧神工
 干货   2019-11-12
倩女幽魂手游师徒任务情义春秋猜成语答案丝路古道:单枪匹马
 干货   2019-11-12
倩女幽魂手游师徒任务情义春秋猜成语答案镇郊荒野:与虎谋皮
 干货   2019-11-12
倩女幽魂手游师徒任务情义春秋猜成语答案镇郊荒野:李代桃僵
 干货   2019-11-12
倩女幽魂手游师徒任务情义春秋猜成语答案镇郊荒野:指鹿为马
 干货   2019-11-12
倩女幽魂手游师徒任务情义春秋猜成语答案金陵:小鸟依人
 干货   2019-11-12
倩女幽魂手游师徒任务情义春秋猜成语答案金陵:千金买邻
 干货   2019-11-12
 
推荐阅读
 
 
 
>>返回首頁<<
 
靜靜地坐在廢墟上,四周的荒凉一望無際,忽然覺得,淒涼也很美
© 2005- 王朝網路 版權所有