
課程咨詢: 400-996-5531 / 投訴建議: 400-111-8989
認(rèn)真做教育 專心促就業(yè)
如果你曾為你的UNIX系統(tǒng)下載過widget,那么你肯定遇到過TAR壓縮文件。在UNIX系統(tǒng)中磁帶歸檔文件格式常用于打包多個(gè)文件,以便于分發(fā)。
這種格式的流行不僅由于在所有UNIX系統(tǒng)中都存在該格式的創(chuàng)建工具,還因?yàn)樵趯?shí)際應(yīng)用中,它便于保存歸檔文件的目錄結(jié)構(gòu)、許可信息、用戶和組信息等。
PHP(PHP培訓(xùn) php教程 )中有大量的內(nèi)建函數(shù)和可連接的擴(kuò)展庫,可用于幾乎所有文件格式。特別是它可以通過PEAR的Archive_Tar類讀取和創(chuàng)建TAR文檔。在本文中,我們將向你說明這個(gè)類的行為,并演示開發(fā)人員是如何利用它動(dòng)態(tài)地創(chuàng)建,編輯和顯示TAR文檔。
在這里我將假設(shè)你有一個(gè)工作數(shù)據(jù)庫和安裝了PHP,并且正確的安裝了PEAR的Archive_Tar類。
注:你可以直接從網(wǎng)上安裝PEAR 的Archive_Tar類包,或者從網(wǎng)上下載安裝。
創(chuàng)建TAR文檔
讓我們從一個(gè)簡(jiǎn)單的例子開始:動(dòng)態(tài)創(chuàng)建包含幾個(gè)文件的TAR文檔。使用下面的腳本:
列表 A
include ('Archive/Tar.php');// import class
$obj = new Archive_Tar('dummy.tar'); // name of archive
$files = array('mystuff/ad.gif',
'mystuff/alcon.doc',
'mystuff/alcon.xls'); // files to store in archive
if ($obj->create($files)) {
echo 'Created successfully!';
} else {
echo 'Error in file creation';
}
>
這個(gè)腳本相當(dāng)簡(jiǎn)單,但是還是值得具體看一下:
首先,創(chuàng)建Archive_Tar類的一個(gè)實(shí)例,初始化創(chuàng)建文檔的路徑和文件名。在本例中,文件名是dummy.tar,存于當(dāng)前目錄。
其次,列出歸檔的所有文件,包括它們的磁盤地址,存于一個(gè)PHP數(shù)組中。腳本(更準(zhǔn)確的說是運(yùn)行腳本的用戶)必須擁有訪問這些磁盤地址的許可權(quán),否則文檔創(chuàng)建過程就會(huì)失敗。
最后,creat()方法將所有的文件壓縮到單個(gè)TAR文檔。這個(gè)方法接受輸入的文件名數(shù)組,返回一個(gè)布爾值表明文檔是否成功創(chuàng)建。記住腳本必須擁有將文件寫入命名磁盤地址的許可權(quán),否則,creat()方法就無法使用,文檔創(chuàng)建就會(huì)失敗。
應(yīng)用上面例子中的腳本,修改$files數(shù)組的內(nèi)容以反映你的本地系統(tǒng)配置,在命令行或者瀏覽器中試著執(zhí)行它,如果一切正常的話,腳本將會(huì)查找并讀取這些文件到一個(gè)命名為dummy.tar的TAR文檔中。
查看TAR文檔內(nèi)容
如何查看已經(jīng)存在的TAR文件的內(nèi)部信息呢?Archive_Tar類有一個(gè)listContent()方法,該方法可以查看一個(gè)TAR包中的每個(gè)組件的詳細(xì)信息。列表B顯示了如何使用它:
列表 B
include ('Archive/Tar.php');// import class
$obj = new Archive_Tar('dummy.tar'); // name of archive
$files = $obj->listContent();// array of file information
foreach ($files as $f) {
foreach ($f as $k => $v) {
echo "$k: $vn";
}
echo "n";
}
>
listContent()方法的輸出是一個(gè)結(jié)構(gòu)化數(shù)組,每個(gè)數(shù)組元素代表文檔中的一個(gè)文件。典型的是,每個(gè)元素有相應(yīng)文件的名字信息,它的許可模式,所有者和組用戶的ID,狀態(tài),大小和上一次修改的時(shí)間。通過一個(gè)循環(huán)可以很容易的提取這些信息,然后再對(duì)格式稍作修改使它根據(jù)表達(dá)性,像上面的例子中提到的。
【免責(zé)聲明】本文部分系轉(zhuǎn)載,轉(zhuǎn)載目的在于傳遞更多信息,并不代表本網(wǎng)贊同其觀點(diǎn)和對(duì)其真實(shí)性負(fù)責(zé)。如涉及作品內(nèi)容、版權(quán)和其它問題,請(qǐng)?jiān)?0日內(nèi)與聯(lián)系我們,我們會(huì)予以更改或刪除相關(guān)文章,以保證您的權(quán)益!