12.3.3 文件的內容操作
寫入文件
fwrite -- 寫入文件(可安全用于二進制文件)
語法:int fwrite ( resource handle, string string [, int length] )
fwrite() 把 string 的內容寫入 文件指針 handle 處。 如果指定了 length,當寫入了 length 個字節(jié)或者寫完了 string 以后,寫入就會停止,視乎先碰到哪種情況。
返回寫入的字符數(shù),出現(xiàn)錯誤時則返回 FALSE 。
讀取文件內容
移動文件指針
ftell -- 返回文件指針讀/寫的位置
語法:int ftell ( resource handle )
返回由 handle 指定的文件指針的位置,也就是文件流中的偏移量。 如果出錯,返回 FALSE。文件指針必須是有效的,且必須指向一個通過 fopen()或 popen()成功打開的文件。
fseek -- 在文件指針中定位
語法:int fseek ( resource handle,int offset [,int whence] )
在與 handle 關聯(lián)的文件中設定文件指針位置。新位置,從文件頭開始以字節(jié)數(shù)度量,是以 whence 指定的位置加上 offset。whence 的值定義為:
SEEK_SET - 設定位置等于 offset 字節(jié)。
SEEK_CUR - 設定位置為當前位置加上 offset。
SEEK_END - 設定位置為文件尾加上 offset。(要移動到文件尾之前的位置,需要給 offset 傳遞一個負值。)
如果 沒有指定 whence,默認為 SEEK_SET。
成功則返回 0;否則返回 -1。注意移動到 EOF 之后的位置不算錯誤
rewind -- 倒回文件指針的位置
語法:bool rewind ( resource handle )
將 handle 的文件位置指針設為文件流的開頭。 如果成功則返回 TRUE,失敗則返回 FALSE。 文件指針必須合法,并且指向由 fopen() 成功打開的文件。
<?php
//以只讀模式打開文件
$fp = fopen('data.txt', 'r') or die("文件打開失敗");
echo ftell($fp)."<br>"; //輸出剛打開文件指針默認位置,指針在文件開頭位置為0
echo fread($fp, 10)."<br>";//讀取文件中的前10個字符輸出,指針位置發(fā)生了變化
echo ftell($fp)."<br>"; //讀取文件前10個字符后,指針移動位置在第10個字節(jié)處
fseek($fp, 100, SEEK_CUR); //將文件指針的位置,由當前位置向后移動100個字節(jié)數(shù)
echo ftell($fp)."<br>"; //文件位置在110個字節(jié)處
echo fread($fp, 10)."<br>"; //讀取110到120字節(jié)數(shù)位置的字串,讀取后指針位置為120
fseek($fp, -10, SEEK_END); //又將指針移動到倒數(shù)10個字節(jié)位置處
echo fread($fp, 10)."<br>"; //輸出文件中最后10個字符
rewind($fp); //又移動文件指針到文件的開頭
echo ftell($fp)."<br>"; //指針在文件的開頭位置,輸出0
fclose($fp); //關閉文件資源
demo.txt
www.lampbrother.net
www.lampbrother.net
www.lampbrother.net
www.lampbrother.com
hello world
hello world
fgetc.php
<?php
/*
* fopen("位置URL", "r+");
*
*
*
*/
//打開
$fp = fopen("demo.txt", "r");
while(!feof($fp)){
echo fgetc($fp);
}
//關閉
fclose($fp);
fgets.php
<?php
/*
* fopen("位置URL", "r+");
*
*
*
*/
//打開
$fp = fopen("demo.txt", "r");
while(!feof($fp)) {
echo fgets($fp)."<br>";
}
//關閉
fclose($fp);
fread.php
<?php
/*
* fopen("位置URL", "r+");
*
*
*
*/
//打開
$fp = fopen("demo.txt", "r");
//echo fread($fp, filesize("demo.txt"));
while(!feof($fp)) {
echo fread($fp, 1024);
}
//關閉
fclose($fp);
ftell.php
<?php
/*
* fopen("位置URL", "r+");
*
*
*
*/
//打開
$fp = fopen("demo.txt", "r");
echo ftell($fp)."<br>";
fseek($fp, 4);
echo ftell($fp)."<br>";
echo fread($fp, 11)."<br>";
echo ftell($fp)."<br>";
fseek($fp, -3, SEEK_END);
echo fread($fp, 3);
rewind($fp);
echo ftell($fp)."<br>";
//關閉
fclose($fp);
fwrite.php
<?php
/*
* fopen("位置URL", "r+");
*
*
*
*/
//打開
$fp = fopen("demo.txt", "a");
fwrite($fp, "www.lampbrother.net\n");
//關閉
fclose($fp);
test.php
<?php
/*
* fopen("位置URL", "r+");
*
*
*
*/
//打開
$fp = fopen("demo.txt", "a");
rewind($fp);
echo ftell($fp)."<br>";
fwrite($fp, "hello world\n");
//關閉
fclose($fp);
tmp.txt