利用PHP和PEAR動態建立和編輯TAR文件

2021-04-15 07:57:42 字數 2088 閱讀 8921

這種格式的流行不僅由於在所有unix系統中都存在該格式的建立工具,還因為在實際應用中,它便於儲存歸檔檔案的目錄結構、許可資訊、使用者和組資訊等寫字樓。

php中有大量的內建函式和可連線的擴充套件庫,可用於幾乎所有檔案格式。特別是筆記本維修它可以通過pear的archive_tar類讀取和建立tar文件。在本文中,我們將向你說明這個類的行為,並演示開發人員是如何利用它動態地建立,編輯和顯示tar文件。

在這裡我將假設你有乙個工作資料庫和安裝了php,並且正確的安裝了pear的archive_tar類。

建立tar文件

讓我們從乙個簡單的例子開始:動態建立包含幾個檔案的tar文件。使用下面的指令碼:

列表 a

create($files)) else

>

這個指令碼相當簡單,但是還是值得具體看一下:

首先,建立archive_tar類的乙個例項,初始化建立文件的路徑和檔名。在本例中,檔名是dummy.tar,存於當前目錄北京電磁爐。

其次,列出歸檔的所有檔案,包括它們的磁碟位址,存於乙個php陣列中。指令碼(更準確的說是執行指令碼的使用者)必須擁有訪問這些磁碟位址的許可權,否則文件建立過程就會失敗。

最後,creat()方法將所有的檔案壓縮到單個tar文件。這個方法接受輸入的檔名陣列,返回乙個布林值表明文件是否成功建立。記住指令碼必須擁有將檔案寫入命名磁碟位址的許可權,否則,creat()方法就無法使用,文件建立就會失敗華泰聖達菲。

應用上面例子中的指令碼,修改$files陣列的內容以反映你的本地系統配置,在命令列或者瀏覽器中試著執行它,如果一切正常的話,指令碼將會查詢並讀取這些檔案到乙個命名為dummy.tar的tar文件中。

檢視tar文件內容

如何檢視已經存在的tar檔案的內部資訊呢?archive_tar類有乙個listcontent()方法,該方法可以檢視乙個tar包中的每個元件的詳細資訊。列表b顯示了如何使用它:

列表 b

listcontent();// array of file information

foreach ($files as $f)

echo "n";

}>

listcontent()方法的輸出是乙個結構化陣列,溫度控制器每個陣列元素代表文件中的乙個檔案。典型的是,每個元素有相應檔案的名字資訊,它的許可模式,所有者和組使用者的id,狀態,大小和上一次修改的時間。通過乙個迴圈可以很容易的提取這些資訊,然後再對格式稍作修改使它根據表達性,像上面的例子中提到的。下面是乙個輸入示例:

校驗和:3872

檔名:mystuff/alcon.doc

模式:33206

使用者id:433

組id:106

大小:41472

向已經存在的tar文件中新增檔案

由於我們大家的健忘性國內旅遊,有時可能忘記某個檔案,archive_tar 類通過add()方法提供了

向已經存在的文件中新增新檔案的能力。為了演示,我們再回到上文的dummy.tar文件,試著給它新增乙個新檔案(列表c):

列表cadd($files)) else

>

從已經存在的tar文件中提取檔案

在你將檔案存入文件之後,如何讀取北京辦公家具呢?使用extractlist()方法,顯然,這個方法可以從乙個已經存在的文件中提取乙個或多個檔案到乙個指定目錄,如列表d:

列表dextractlist($files, 'unpackaged/')) else

>

這裡,要提取檔案陣列傳遞給extractlist()方法,北京鮮花速遞同時包括提取檔案存入的目錄名。注意的是檔案將連同它們的內部目錄結構一起被提取出來(雖然這個行為可以通過傳遞特殊引數給extractlist()方法進行修改)。

除了這種可選擇提取,還可以使用extract()方法,這個方法解壓整個文件,提取所有檔案到乙個指定目錄。如果這個目錄不存在,它將通過extract()方法自動建立,當然要假設指令碼據有些磁碟的許可權。列表e顯示如何去做:

列表eextract('unpackaged/')) else

>

如上面的例子演示,pear的archive_tar類是多功能的,它允許你僅用幾行簡單的**就可以執行一些相當複雜的tae行為。希望本文中的示例指令碼對你在日常的開發活動中使用archive_tar類有所幫助。

利用PEAR 和 PHP給你的網路應用新增條形碼

利用pear 和 php給你的網路應用新增條形碼 2005 05 31 11 10 am 將硬拷貝專案與後端系統連線起來的乙個方法是 通過網路應用提供條形碼。phillip perkins向我們展示,利用php中的pear image barcode類命令給網路應用建立條形碼是多麼容易。自動訂閱te...

建立和使用動態連線庫

摘自 一 建立動態連線庫 1.建立乙個dll專案 2.新增乙個名為 mymathfuncs 的簡單類,以執行常見的算術運算,如加 減 乘和除。應與以下內容類似 示例 mathfuncsdll.h namespace mathfuncs 請注意此 方法宣告中的 declspec dllexport 修...

Qt plugin 的建立和動態載入

plug in 是乙個實現了乙個或多個介面的dll,下面我們將介紹在qt中如何建立plug in 和如何動態載入plug in 首先定義乙個inte ce,並且用q declare inte ce巨集告知qt meta object system有這 樣乙個inte ce,如下 class echo...