在本節(jié)中,我們向您講解如何在服務(wù)器上打開、讀取以及關(guān)閉文件。
打開文件的更好的方法是通過 fopen() 函數(shù)。此函數(shù)為您提供比 readfile() 函數(shù)更多的選項(xiàng)。
在課程中,我們將使用文本文件 "webdictionary.txt":
AJAX = Asynchronous JavaScript and XML CSS = Cascading Style Sheets HTML = Hyper Text Markup Language PHP = PHP Hypertext Preprocessor SQL = Structured Query Language SVG = Scalable Vector Graphics XML = EXtensible Markup Language
fopen() 的第一個參數(shù)包含被打開的文件名,第二個參數(shù)規(guī)定打開文件的模式。如果 fopen() 函數(shù)未能打開指定的文件,下面的例子會生成一段消息:
<?php $myfile = fopen("webdictionary.txt", "r") or die("Unable to open file!"); echo fread($myfile,filesize("webdictionary.txt")); fclose($myfile); ?>
提示:我們接下來將學(xué)習(xí) fread() 以及 fclose() 函數(shù)。
文件會以如下模式之一打開:
模式 | 描述 |
---|---|
r | 打開文件為只讀。文件指針在文件的開頭開始。 |
w | 打開文件為只寫。刪除文件的內(nèi)容或創(chuàng)建一個新的文件,如果它不存在。文件指針在文件的開頭開始。 |
a | 打開文件為只寫。文件中的現(xiàn)有數(shù)據(jù)會被保留。文件指針在文件結(jié)尾開始。創(chuàng)建新的文件,如果文件不存在。 |
x | 創(chuàng)建新文件為只寫。返回 FALSE 和錯誤,如果文件已存在。 |
r+ | 打開文件為讀/寫、文件指針在文件開頭開始。 |
w+ | 打開文件為讀/寫。刪除文件內(nèi)容或創(chuàng)建新文件,如果它不存在。文件指針在文件開頭開始。 |
a+ | 打開文件為讀/寫。文件中已有的數(shù)據(jù)會被保留。文件指針在文件結(jié)尾開始。創(chuàng)建新文件,如果它不存在。 |
x+ | 創(chuàng)建新文件為讀/寫。返回 FALSE 和錯誤,如果文件已存在。 |
fread() 函數(shù)讀取打開的文件。
fread() 的第一個參數(shù)包含待讀取文件的文件名,第二個參數(shù)規(guī)定待讀取的最大字節(jié)數(shù)。
如下 PHP 代碼把 "webdictionary.txt" 文件讀至結(jié)尾:
fread($myfile,filesize("webdictionary.txt"));
fclose() 函數(shù)用于關(guān)閉打開的文件。
注釋:用完文件后把它們?nèi)筷P(guān)閉是一個良好的編程習(xí)慣。您并不想打開的文件占用您的服務(wù)器資源。
fclose() 需要待關(guān)閉文件的名稱(或者存有文件名的變量):
<?php
$myfile = fopen("webdictionary.txt", "r");
// some code to be executed....
fclose($myfile);
?>
fgets() 函數(shù)用于從文件讀取單行。
下例輸出 "webdictionary.txt" 文件的首行:
<?php $myfile = fopen("webdictionary.txt", "r") or die("Unable to open file!"); echo fgets($myfile); fclose($myfile); ?>
注釋:調(diào)用 fgets() 函數(shù)之后,文件指針會移動到下一行。
feof() 函數(shù)檢查是否已到達(dá) "end-of-file" (EOF)。
feof() 對于遍歷未知長度的數(shù)據(jù)很有用。
下例逐行讀取 "webdictionary.txt" 文件,直到 end-of-file:
<?php
$myfile = fopen("webdictionary.txt", "r") or die("Unable to open file!");
// 輸出單行直到 end-of-file
while(!feof($myfile)) {
echo fgets($myfile) . "<br>";
}
fclose($myfile);
?>
fgetc() 函數(shù)用于從文件中讀取單個字符。
下例逐字符讀取 "webdictionary.txt" 文件,直到 end-of-file:
<?php
$myfile = fopen("webdictionary.txt", "r") or die("Unable to open file!");
// 輸出單字符直到 end-of-file
while(!feof($myfile)) {
echo fgetc($myfile);
}
fclose($myfile);
?>
注釋:在調(diào)用 fgetc() 函數(shù)之后,文件指針會移動到下一個字符。
如需完整的 PHP 文件系統(tǒng)參考手冊,請?jiān)L問 365jz 提供的 PHP Filesystem 參考手冊。
如對本文有疑問,請?zhí)峤坏浇涣髡搲?,廣大熱心網(wǎng)友會為你解答??! 點(diǎn)擊進(jìn)入論壇
Powered by 365建站網(wǎng) RSS地圖 HTML地圖
copyright © 2013-2024 版權(quán)所有 鄂ICP備17013400號