PHP - 檔案處理



在PHP中,檔案是一個資源物件,可以線性地讀取或寫入資料。“檔案處理”是指PHP中的一組函式,這些函式允許使用PHP程式碼對磁碟檔案執行讀/寫操作。

檔案物件被分類為**流**。任何進行線性讀/寫操作的資源都是流。其他類似流的物件包括TCP套接字、標準輸入流(即由“php://stdin”表示的系統鍵盤)、標準輸出流(由“php://stdout”表示)和錯誤流“php://stderr”。

**注意** - 常量STDIN、STDOUT和STDERR分別代表相應的標準流。

儘管PHP被認為是用於開發Web應用程式的伺服器端指令碼語言,但PHP也具有命令列介面來執行控制檯I/O操作。

示例

PHP中的readline()函式接受來自標準鍵盤的使用者輸入,而echo/print語句在控制檯上呈現輸出。

<?php
   $str = readline("Type something:");
   echo $str;
?>

它將產生以下**輸出** -

C:\xampp\php>php hello.php
Type something: Are you enjoying this PHP tutorial?
Are you enjoying this PHP tutorial?

示例

我們可以透過從“php://stdin”讀取輸入並將其輸出到“php://stdout”來獲得相同的效果。

<?php
   $f = fopen("php://stdin", "r");
   echo "Type something: ";

   $str = fgets($f);
   $f1 = fopen("php://stdout", "w");

   fputs($f1, $str);
?>

這裡,fopen()函式用於開啟**stdin**流以進行讀取和**stdout**流以進行寫入。

示例

PHP支援各種流協議,用於流相關的函式,例如fopen()、file_exists()等。使用php_get_wrappers()函式可以獲取所有已註冊包裝器的列表。

<?php
   print_r(stream_get_wrappers());
?>

它將產生以下**輸出** -

Array
(
   [0] => php
   [1] => file
   [2] => glob
   [3] => data
   [4] => http
   [5] => ftp
   [6] => zip
   [7] => compress.zlib
   [8] => compress.bzip2
   [9] => https
   [10] => ftps
   [11] => phar
)

流被引用為“scheme://target”。例如,檔案流是“file://xyz.txt”。

來自控制檯的輸入資料儲存在計算機的主記憶體(RAM)中,直到應用程式執行。此後,RAM中的記憶體內容將被清除。

我們希望以一種可以在需要時從永續性介質(如磁碟檔案)中檢索到的方式來儲存它。因此,我們將使用磁碟檔案來讀取資料,以及作為儲存資料的目的地,而不是標準流(鍵盤用於輸入,顯示裝置用於輸出)。

除了在上述示例中使用的讀寫模式(與標準流的I/O操作)之外,檔案流還可以以各種其他模式開啟,例如“r+”和“w+”用於同時讀/寫,“b”用於二進位制模式等。

要開啟一個磁碟檔案以進行讀取並獲取其引用指標,請使用fopen()函式。

$handle = fopen('file://' . __DIR__ . '/data.txt', 'r');

“file://”方案是預設方案。因此,特別是在處理本地檔案時,可以輕鬆刪除它。

**注意** - 建議始終關閉已開啟的流。為此,請使用fclose()函式。

fclose($handle);

PHP有幾個內建函式用於對檔案流執行讀/寫操作。在後續章節中,我們將探討檔案系統函式。

廣告