天天看點

可用于移動檔案的是php,PHP移動檔案指針ftell()、fseek()、rewind()函數總結

在對檔案進行讀寫過程中,有時需要在檔案中跳轉、同不同位置讀取,以及将資料寫入到不同的位置。例如,使用檔案模拟資料庫儲存資料,就需要移動檔案指針。指針的位置是以從檔案頭開始的位元組數度量的,預設以不同模式打開檔案時,檔案指針通常在檔案的開頭或是結尾處,可以通過ftell()、fseek()和rewind()三個函數對檔案指針進行操作,它們的原型如下所示:

int ftell(resource handle)         //傳回檔案指針的目前位置

int fseek(resource hanlde,int offset[,int whence])          //移動檔案指針到指定位置

bool rewind(resource handle)          //移動檔案指針到檔案的開頭

使用這些函數時,必須提供一個用fopen()函數打開的、合法的檔案指針。函數ftell()擷取由指定的資源中的檔案指針目前位置的偏移量;函數rewind()将檔案指針移回到指定資源的開頭;而函數fseek()函數則将指針移動到第二個參數offset指定的位置,如果沒有提供第三個可選參數whence,則位置将設定為從檔案開頭的offset位元組處。否則,第三個參數whence可以設定為三個可能的值,它将影響指針的位置。

★SEEK_CUR:設定指針位置為目前位置加上第二個參數所提供的offset位元組。

★SEEK_END:設定指針位置為EOF加上offset位元組。在這裡,offset必須設定為負值。

★SEEK_SET:設定指針位置為offset位元組處。這與忽略第三個參數whence效果相同。

如果fseek()函數執行成功,将傳回0,失敗則傳回-1.如果将檔案以追加模式“a”或“a+”打開,寫入檔案的任何資料是會被附加在後面,不會管檔案指針的位置。代碼如下所示:

$fp = fopen('data.txt' ,'r')or die("檔案打開失敗");

echo ftell($fp)."

";         //輸出剛打開檔案的指針預設位置,指針在檔案的開頭位置為0

echo fread($fp, 10)."

";        //讀取檔案中的前10個字元輸出,指針位置發生了變化

echo ftell($fp)."

";           //讀取檔案的前10個字元之後,指針移動的位置在第10個位元組處

fseek($fp, 100,SEEK_CUR);       //又将指針移動到倒數10個位元組位置處

echo ftell($fp); //檔案的位置在110個位元組處

echo fread($fp,10)."

";     //讀取110到120位元組數位置的字元串,讀取後指針的位置為120

fseek($fp,-10,SEEK_END);         //又将指針移動到倒數10個位元組位置處

echo fread($fp, 10)."

";        //輸出檔案中最後10個字元

rewind($fp);          //又移動檔案指針到檔案的開頭

echo ftell($fp);           //指針在檔案的開頭位置,輸出0

fclose($fp);

?>