| mode | 模式名稱 | 說明 |
|---|---|---|
| r | 只讀 | 讀模式—進行讀取,文件指針位于文件的開頭 |
| r+ | 讀寫 | 讀寫模式—進行讀寫,文件指針位于文件的開頭。在現有文件內容的末尾之前進行寫入就會覆蓋原有的內容 |
| w | 只寫 | 寫模式—進行寫入文件,文件指針指向頭文件。如果該文件存在,則所有文件內容被刪除,否則函數將創建這個文件 |
| w+ | 讀寫 | 讀寫模式—進行讀寫,文件指針指向頭文件。如果該文件存在,則所有文件的內容被刪除;否則函數將創建這個文件 |
| x | 謹慎寫 | 寫模式打開文件,從文件頭開始寫。如果文件已經存在,則該文件將不會被打開,函數返回false,PHP將產生一個警告 |
| x+ | 謹慎寫 | 讀/寫模式打開文件,從文件頭開始寫。如果該文件存在,則該文件將不會被打開,函數返回false,PHP將產生一個警告 |
| a | 追加 | 追加模式打開文件,文件指針指向尾文件。如果該文件已有內容,則將從內容末尾開始追加;如果文件不存在,則函數創建這個文件 |
| a+ | 追加 | 追加模式打開文件,文件指針指向頭文件。如果該文件已有內容,則從文件末尾開始追加或者讀?。蝗绻募淮嬖?,則函數將創建這個文件 |
| b | 二進制 | 二進制模式—用于與其他模式進行連接。如果文件系統能夠區分二進制文件和文本文件,可能會使用它。Windows可以區分;UNIX則不區分。推薦使用這個選項,便于獲得最大程度的可移植性。它是默認模式 |
| t | 文本 | 用于其他模式的結合。這個模式只是Windows下的一個選擇 |
2、關閉文件
對文件的操作結束后應該關閉這個文件,否則可能引起錯誤。在PHP中使用fclose()函數關閉文件,該函數的語法如下:
bool fclose ( resource handle ) ;
該函數將參數handle指向的文件關閉,如果成功,返回true,否則返回false。其中的文件指針必須是有效的,并且是通過fopen()函數成功打開的文件。例如:
?php
$f_open =fopen("../file.txt.","rb"); //打開文件
… //對文件進行操作
fclose($f_open) //操作完成后關閉文件
?>
讀寫文件
1.從文件中讀取數據
從文件中讀取數據,可以讀取一個字符、一行字串或整個文件,還可以讀取任意長度的字串。
讀取整個文件:readfile()、file()和file_get_contents()。
(1)readfile()函數
readfile()函數用于讀入一個文件并將其寫入到輸出緩沖,如果出現錯誤則返回false。函數語法 如下:
int readfile(string filename)
使用readfile()函數,不需要打開/關閉文件,不需要echo/print等輸出語句,直接寫出文件路徑即可。
(2)file()函數
file()函數也可以讀取整個文件的內容,只是file()函數將文件內容按行存放到數組中,包括換行符在內。如果失敗則返回false。函數語法如下:
array file(string filename)
(3)file_get_contents()函數
該函數將文件內容(filename)讀入一個字符串。如果有offset和maxlen參數,將在參數offset所指定的位置開始讀取長度為maxlen的內容。如果失敗,返回false。函數語法如下:
string file_get_contents(string filename[,int offset[,int maxlen]])
該函數適用于二進制對象,是將整個文件的內容讀入到一個字符串中的首選方式。
示例:
使用readfile()函數、file()函數和file_get_contents()函數分別讀取tm.txt的內容。
!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
html xmlns="http://www.w3.org/1999/xhtml">
head>
meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
title>讀取整個文件/title>
style type="text/css">
!--
body,td,th {
font-size: 12px;
}
body {
margin-left: 10px;
margin-top: 10px;
margin-right: 10px;
margin-bottom: 10px;
}
-->
/style>/head>
body>
table border="1" cellspacing="0" cellpadding="0">
tr>
td width="280" height="25" align="right" valign="middle" scope="col">使用readfile()函數讀取文件內容:/td>
td height="25" align="center" valign="middle" scope="col">
?php readfile('tm.txt'); ?> /td>
/tr>
tr>
td height="25" align="right" valign="middle">使用file()函數讀取文件內容:/td>
td height="25" align="center" valign="middle">
?php
$f_arr = file('tm.txt');
foreach($f_arr as $cont){
echo $cont."br>";
}
?>/td>
/tr>
tr>
td width="280" height="25" align="right" valign="middle" scope="col">使用file_get_contents()函數讀取文件內容:/td>
td height="25" align="center" valign="middle" scope="col">
?php
$f_chr = file_get_contents('tm.txt');
echo $f_chr;
?>/td>
/tr>
/table>
/body>
/html>
效果:

讀取一行數據:fgets()和fgetss()
(1)fgets()函數
fgets()函數用于一次讀取一行數據。函數語法如下:
string fgets( int handle [, int length] )
函數能夠實現從handle指定文件中讀取一行并返回長度最大值為
length-1個字節的字符串。在遇到換行符、EOF或者讀取了length-1個字節后停止。如果忽略length參數,那么讀取數據直到行結束。
(2)fgetss()函數
fgetss()函數是fgets()函數的變體,用于讀取一行數據,同時,
fgetss()函數會過濾掉被讀取內容中的html和php標記。函數語法如下:
string fgetss ( resource handle [, int length [, string allowable_tags]] )
該函數能夠從讀取的文件中過濾掉任何html和php標記??梢允褂?
allowable_tags參數來控制哪些標記不被過濾掉。
示例:使用fgets()函數與fgetss()函數分別讀取fun.php文件并顯示出來。
fun.php:
table width="200" border="0" cellspacing="0" cellpadding="0"> tr> td height="20" align="center" valign="middle" scope="col">font color='red'>I am red./font>/td> td height="20" align="center" valign="middle" scope="col">font color='green'>I am green./font>/td> /tr> tr> td height="20" align="center" valign="middle">font color='black'>I am black./font>/td> td height="20" align="center" valign="middle">font color='pink'>I am pink. /font>/td> /tr> /table>
index.php:
!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
html xmlns="http://www.w3.org/1999/xhtml">
head>
meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
title>fgets和fgetss的區別/title>
style type="text/css">
!--
body,td,th {
font-size: 12px;
}
body {
margin-left: 10px;
margin-top: 10px;
margin-right: 10px;
margin-bottom: 10px;
}
-->
/style>/head>
body>
div align="left">/div>
table border="1" cellspacing="0" cellpadding="0">
tr>
td height="30" align="right" valign="middle" scope="col">使用fgets函數:/td>
td height="30" align="center" valign="middle" scope="col">
?php
header("Content-Type:text/html;charset=utf-8");
$fopen = fopen('fun.php','rb');
while(!feof($fopen)){
echo fgets($fopen);
}
fclose($fopen);
?> /td>
/tr>
tr>
td height="30" align="right" valign="middle">使用fgetss函數:/td>
td height="30" align="center" valign="middle">
?php
$fopen = fopen('fun.php','rb');
while(!feof($fopen)){
echo fgetss($fopen);
}
fclose($fopen);
?> /td>
/tr>
/table>
/body>
/html>
效果:

讀取一個字符:fgetc()
在對某一個字符進行查找、替換時,需要有針對性地對某個字符進行讀取,在PHP中可以使用fgetc()函數實現此功能。函數語法如下:
string fgetc ( resource handle )
該函數返回一個字符,該字符從handle指向的文件中得到。遇到EOF則返回false。
讀取任意長度的字串:fread()
fread()可以從文件中讀取指定長度的數據,函數語法如下:
string fread ( int handle, int length )
參數handle為指向的文件資源,length是要讀取的字節數。當 函數讀取length個字節或到達EOF時停止執行。
2.將數據寫入文件
寫入數據也是PHP中常用的文件操作,在PHP中使用fwrite()和file_put_contents()函數向文件中寫入數據。
fwrite()函數也稱為fputs(),它們的用法相同。fwrite()函數的語法如下:
int fwrite ( resource handle, string string [, int length] )
該函數把內容string寫入文件指針handle處。如果指定了長度length,則寫入length個字節后停止。如果文件內容長度小于length,則會輸出全部文件內容。
file_put_contents()函數是PHP 5新增的函數,其語法為:
int file_put_contents ( string filename, string data [, int flags])
filename為寫入數據的文件。data為要寫入的數據。flags可以是FILE_USE_INCLUDE_PATH、FILE_APPEND或LOCK_EX,LOCK_EX為獨占鎖定。
使用file_put_contents()函數和依次調用fopen()、fwrite()、 fclose()函數的功能一樣。
示例:使用fwrite函數向文件中寫入數據,再使用 file_put_contents()函數寫入數據。
!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
html xmlns="http://www.w3.org/1999/xhtml">
head>
meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
title>使用fwrite和file_put_contents函數寫入數據/title>
style type="text/css">
!--
body,td,th {
font-size: 12px;
}
body {
margin-left: 10px;
margin-top: 10px;
margin-right: 10px;
margin-bottom: 10px;
}
-->
/style>/head>
body>
?php
header("Content-Type:text/html;charset=utf-8");
$filepath = "05.txt";
$str = "此情可待成追憶 只是當時已惘然br>";
echo "用fwrite函數寫入文件:";
$fopen = fopen($filepath,'wb') or die('文件不存在');
fwrite($fopen,$str);
fclose($fopen);
readfile($filepath);
echo "p>用file_put_contents函數寫入文件:";
file_put_contents($filepath,$str);
readfile($filepath);
?>
/body>
/html>
效果:

除了可以對文件內容進行讀寫,對文件本身同樣也可以進行操作,如復制、重命名、查看修改日期等。PHP內置了大量的文件操作函數。
- bool copy( string path1, string path2):將文件從path1復制到path2。如果成功,返回true,失敗則返回false。例如:copy('tm.txt','../tm.txt')
- bool unlink( string filename )刪除文件,成功返回true,失敗則返回False。例如:unlink(‘./tm.txt')
- int fileatime( string filename )返回文件最后一次被訪問的時間,時間以UNIX時間戳的方式返回。例如:fileatime('1.txt')
- int filemtime( string filename )返回文件最后一次被修改的時間,時間以UNIX時間戳的方式返回。例如:date('Y-m-dH:i:s',filemtime('1.txt'))
- int filesize( string filename )取得文件filename的大(bytes)。例如:filesize('1.txt')
- array pathinfo(string name [, int options])返回一個數組,包含文件name的路徑信息。有dirname、basename和extension??梢酝ㄟ^option設置要返回的信息,有PATHINFO_DIRNAME、PATHINFO_BASENAME和PATHINFO_EXTENSION。
默認為返回全部。例如:
$arr =pathinfo('/tm/sl/12/5/1.txt');
foreach($arras$method=>$value{
echo$method.“:”.$value.“br>”;
}
- string realpath ( string filename )返回文件filename的絕對路徑。如c:\tmp\…\1.txtrealpath('1.txt')
- array stat ( string filename )返回一個數組,包括文件的相關信息,如上面提到的文件大小、最后修改時間等
$arr = stat('1.txt');
foreach($arr as $method => $value){
echo $method.": ".$value."br>";
}
到此這篇關于PHP文件打開關閉及讀寫操作示例解析的文章就介紹到這了,更多相關PHP文件打開關閉及讀寫內容請搜索腳本之家以前的文章或繼續瀏覽下面的相關文章希望大家以后多多支持腳本之家!