PHP移動(dòng)文件指針ftell()、fseek()、rewind()函數(shù)總結(jié)
在對(duì)文件進(jìn)行讀寫過(guò)程中,有時(shí)需要在文件中跳轉(zhuǎn)、同不同位置讀取,以及將數(shù)據(jù)寫入到不同的位置。例如,使用文件模擬數(shù)據(jù)庫(kù)保存數(shù)據(jù),就需要移動(dòng)文件指針。指針的位置是以從文件頭開始的字節(jié)數(shù)度量的,默認(rèn)以不同模式打開文件時(shí),文件指針通常在文件的開頭或是結(jié)尾處,可以通過(guò)ftell()、fseek()和rewind()三個(gè)函數(shù)對(duì)文件指針進(jìn)行操作,它們的原型如下所示:
int ftell(resource handle) //返回文件指針的當(dāng)前位置
int fseek(resource hanlde,int offset[,int whence]) //移動(dòng)文件指針到指定位置
bool rewind(resource handle) //移動(dòng)文件指針到文件的開頭
使用這些函數(shù)時(shí),必須提供一個(gè)用fopen()函數(shù)打開的、合法的文件指針。函數(shù)ftell()獲取由指定的資源中的文件指針當(dāng)前位置的偏移量;函數(shù)rewind()將文件指針移回到指定資源的開頭;而函數(shù)fseek()函數(shù)則將指針移動(dòng)到第二個(gè)參數(shù)offset指定的位置,如果沒(méi)有提供第三個(gè)可選參數(shù)whence,則位置將設(shè)置為從文件開頭的offset字節(jié)處。否則,第三個(gè)參數(shù)whence可以設(shè)置為三個(gè)可能的值,它將影響指針的位置。
★SEEK_CUR:設(shè)置指針位置為當(dāng)前位置加上第二個(gè)參數(shù)所提供的offset字節(jié)。
★SEEK_END:設(shè)置指針位置為EOF加上offset字節(jié)。在這里,offset必須設(shè)置為負(fù)值。
★SEEK_SET:設(shè)置指針位置為offset字節(jié)處。這與忽略第三個(gè)參數(shù)whence效果相同。
如果fseek()函數(shù)執(zhí)行成功,將返回0,失敗則返回-1.如果將文件以追加模式“a”或“a+”打開,寫入文件的任何數(shù)據(jù)是會(huì)被附加在后面,不會(huì)管文件指針的位置。代碼如下所示:
<?php
$fp = fopen('data.txt' ,'r')or die("文件打開失敗");
echo ftell($fp)."<br>"; //輸出剛打開文件的指針默認(rèn)位置,指針在文件的開頭位置為0
echo fread($fp, 10)."<br>"; //讀取文件中的前10個(gè)字符輸出,指針位置發(fā)生了變化
echo ftell($fp)."<br>"; //讀取文件的前10個(gè)字符之后,指針移動(dòng)的位置在第10個(gè)字節(jié)處
fseek($fp, 100,SEEK_CUR); //又將指針移動(dòng)到倒數(shù)10個(gè)字節(jié)位置處
echo ftell($fp); //文件的位置在110個(gè)字節(jié)處
echo fread($fp,10)."<br>"; //讀取110到120字節(jié)數(shù)位置的字符串,讀取后指針的位置為120
fseek($fp,-10,SEEK_END); //又將指針移動(dòng)到倒數(shù)10個(gè)字節(jié)位置處
echo fread($fp, 10)."<br>"; //輸出文件中最后10個(gè)字符
rewind($fp); //又移動(dòng)文件指針到文件的開頭
echo ftell($fp); //指針在文件的開頭位置,輸出0
fclose($fp);
?>
- PHP使用fopen與file_get_contents讀取文件實(shí)例分享
- PHP file_get_contents函數(shù)讀取遠(yuǎn)程數(shù)據(jù)超時(shí)的解決方法
- php 使用file_get_contents讀取大文件的方法
- PHP讀取大文件的類SplFileObject使用介紹
- php讀取本地文件常用函數(shù)(fopen與file_get_contents)
- php fseek函數(shù)讀取大文件兩種方法
- php file_put_contents()功能函數(shù)(集成了fopen、fwrite、fclose)
- PHP $_FILES函數(shù)詳解
- PHP file_get_contents 函數(shù)超時(shí)的幾種解決方法
- php使用file函數(shù)、fseek函數(shù)讀取大文件效率對(duì)比分析
相關(guān)文章
php中刪除字符串中最先出現(xiàn)某個(gè)字符的實(shí)現(xiàn)代碼
刪除字符串中最先出現(xiàn)某個(gè)字,就是通過(guò)explode的靈活用法,需要的朋友可以參考下2013-02-02php 大數(shù)據(jù)量及海量數(shù)據(jù)處理算法總結(jié)
大數(shù)據(jù)量的問(wèn)題是很多面試筆試中經(jīng)常出現(xiàn)的問(wèn)題,比如baidu google 騰訊 這樣的一些涉及到海量數(shù)據(jù)的公司經(jīng)常會(huì)問(wèn)到2011-05-05php實(shí)現(xiàn)的http請(qǐng)求封裝示例
這篇文章主要介紹了php實(shí)現(xiàn)的http請(qǐng)求封裝,結(jié)合實(shí)例形式分析了php基于curl的http請(qǐng)求操作功能實(shí)現(xiàn)技巧與使用方法,需要的朋友可以參考下2016-11-11PHP中simplexml_load_string函數(shù)使用說(shuō)明
這個(gè)問(wèn)題遇到好幾次了,今天翻看以前代碼的時(shí)候看到,便記下來(lái),需要的朋友可以參考下。2011-01-01PHP5.2中date()函數(shù)顯示時(shí)間與北京時(shí)間相差8小時(shí)的解決辦法
北京時(shí)間是東8區(qū),可能是時(shí)區(qū)問(wèn)題.但是此前都沒(méi)問(wèn)題啊,經(jīng)過(guò)google發(fā)現(xiàn)原來(lái)從php5.1.0開始,php.ini里加入了 date.timezone這個(gè)選項(xiàng),默認(rèn)情況下是關(guān)閉的2009-05-05PHP簡(jiǎn)單實(shí)現(xiàn)DES加密解密的方法
這篇文章主要介紹了PHP簡(jiǎn)單實(shí)現(xiàn)DES加密解密的方法,涉及php中mcrypt_encrypt與mcrypt_decrypt方法的相關(guān)使用技巧,具有一定參考借鑒價(jià)值,需要的朋友可以參考下2016-07-07