1、打開文件
resource fopen( string filename, string mode [, int use_include_path [, resource zcontext]])
//文件名的路徑分隔符用“/”
//mode:文件可能通過下列模式來打開:
模式 | 描述 |
---|---|
r | 只讀。在文件的開頭開始。 |
r+ | 讀/寫。在文件的開頭開始。 |
w | 只寫。打開並清空文件的內容;如果文件不存在,則創建新文件。 |
w+ | 讀/寫。打開並清空文件的內容;如果文件不存在,則創建新文件。 |
a | 追加。打開並向文件文件的末端進行寫操作,如果文件不存在,則創建新文件。 |
a+ | 讀/追加。通過向文件末端寫內容,來保持文件內容。 |
x | 只寫。創建新文件。如果文件以存在,則返回 FALSE。 |
x+ |
讀/寫。創建新文件。如果文件已存在,則返回 FALSE 和一個錯誤。 註釋:如果 fopen() 無法打開指定文件,則返回 0 (false)。 |
2、讀取文件內容
(1)讀取一個字符:fgetc()從文件指針指定的位置讀取一個字符。
<span style="color:#000000;">string fgetc( resource handle)</span>
//返回一個字符,遇到EOF則返回FALSE。(2)讀取一行字符:fgets()從文件指針中讀取一行數據。文件指針必須是有效的,並且必須指向一個由fopen()或fsockopen()成功打開的文件。
string fgets( int handle [, int length])
//length:要讀取的數據長度。
fgets()函數能夠從handle指定文件中讀取一行並返回長度最大爲length-1個字節的字符串。在遇到換行符、EOF或者讀取到了length-1個字節後停止,如果忽略length參數,那麼將讀取到行結束。註釋:在調用該函數之後,文件指針會移動到下一行。
fgetss()函數從打開的文件中讀取一行並過濾掉 HTML 和 PHP 標記。
(3)讀取任意長度的字符串:fread()讀取打開的文件。還可以讀取二進制文件。
string fread( int handle, int length)
//length指定要讀取的字節數。此函數在讀取到length個字節或到達EOF時停止執行。
filesize(handle)獲取文件數據的長度。
(4)讀取整個文件:readfile()、file()和file_get_contents()
</pre><pre class="php" name="code">int readfile( string filename [, bool use_include_path [, resource context]])
//readfile()讀取一個文件並寫入到輸出緩衝,成功返回讀取的字節數,失敗返回FALSE。
array file( string filename [, int use_include_path [, resource context]])
//file()將整個文件的內容讀入到一個數組中。成功返回數組,數組中的每個元素都是文件中對應的一行,包括換行符在內;失敗返回FALSE。
string file_get_contents( string filename [, bool use_include_path [, resource context [,int offset [, int maxlen]]]])
//file_get_contents()將文件內容讀入到一個字符串。如果有offset和maxlen參數,將在參數offset所指定的位置開始讀取長度爲maxlen的內容。失敗則返回FALSE。
應用readfile()、file()、file_get_contents()函數,不需要打開/關閉文件,不需要輸出語句,直接應用函數即可。
但是在讀取一個字符、一行字符和任意長度的字符串時必須應用fopen()函數打開文件後才能進行讀取,在讀取完成後還要應用fclose()函數關閉文件。
3、向文件中寫入數據
(1)fwrite(),別名fputs()
int fwrite( resource handle, string string [,int length])
fwrite()函數把string的內容寫入文件指針handle處。成功返回寫入的字符數,失敗FALSE。
在應用fwrite()函數時,如果給出length參數,那麼magic_quotes_runtime(php.ini文件中的選項)配置選項將被忽略,而string中的斜線將不會被抽去。如果在區分二進制文件和文本文件的系統上(如Windows)應用這個函數,打開文件時,fopen()函數的mode參數要加上'b'。
(2)file_put_contents():無需用fopen()和fclose()
將一個字符串data寫入文件中,成功返回寫入的字節數,失敗返回FALSE。
int file_put_contents( string filename, string data [, int flags [, resource context]])
本函數可安全用於二進制對象。如果“fopen wrappers”已經被激活,則在本函數中可以把URL作爲文件名來使用。4、關閉文件指針
bool fclose( resource handle)