PHP 讀取和修改大文件的某行內(nèi)容的代碼
更新時(shí)間:2009年10月30日 20:20:43 作者:
最近碰到一個(gè)比較有趣的問(wèn)題,就是修改某個(gè)文件的某一行字符,不過(guò)文件太大,file()直接讀取是不可能的,我使用fgets來(lái)跳轉(zhuǎn)到指定行,并用fwrite修改某個(gè)字符串。
復(fù)制代碼 代碼如下:
$fp = fopen('d:/file.txt', 'r+');
if ($fp) {
$i = 1;
while (!feof($fp)) {
//修改第二行數(shù)據(jù)
if ($i == 2) {
fseek($fp, 2, SEEK_CUR);
fwrite($fp, '#');
break;
}
fgets($fp);
$i++;
}
fclose($fp);
}
這里需要注意的是fgets獲取到一行后,文件指針指向行尾(也就是下一行開(kāi)頭),所以fwrite操作的是fgets后的下一行開(kāi)頭,至于從該行的第幾個(gè)字符開(kāi)始寫,可以使用fseek函數(shù)來(lái)移動(dòng)文件指針。另外一個(gè)需要注意的是,這里fwrite寫入是執(zhí)行替換操作,而不是插入操作,所以指針后面的字符會(huì)一個(gè)個(gè)被替換掉。至于怎么插入我就沒(méi)研究了。估計(jì)很困難。為了效率可能只能寫入另外一個(gè)臨時(shí)文件了,不知道有沒(méi)有其他更好的方法。
另外今天還看到了使用SPL進(jìn)行操作的方法:
復(fù)制代碼 代碼如下:
$fp = new SplFileObject('d:/file.txt', 'r+');
//轉(zhuǎn)到第二行, seek方法參數(shù)從0開(kāi)始計(jì)數(shù), 經(jīng)我測(cè)試指針指向行尾了, 所以修改的是第三行
$fp->seek(1);
//獲取當(dāng)前行內(nèi)容(第二行)
$line = $fp->current();
//下面是對(duì)第三行的操作
$fp->fseek(2, SEEK_CUR);
$fp->fwrite('#');
SplFileObject提供的方法比基本的文件操作函數(shù)更豐富一些,包括采用key/value方法遍歷文件行等。SPL應(yīng)該是PHP5增加進(jìn)去的吧,還有其他很多很有用的對(duì)象。包括數(shù)組、文件目錄操作、異常處理、一些基本類型操作等,這些功能還在陸續(xù)增加,可以通過(guò)繼承SPL擴(kuò)展這些方法讓我們處理底層的操作更方便。
您可能感興趣的文章:
- PHP搭建大文件切割分塊上傳功能示例
- 用PHP讀取超大文件的實(shí)例代碼
- PHP讀取大文件末尾N行的高效方法推薦
- php超快高效率統(tǒng)計(jì)大文件行數(shù)
- PHP讀取大文件的幾種方法介紹
- PHP大文件分割上傳 PHP分片上傳
- php使用file函數(shù)、fseek函數(shù)讀取大文件效率對(duì)比分析
- PHP 讀取大文件并顯示的簡(jiǎn)單實(shí)例(推薦)
- php斷點(diǎn)續(xù)傳之如何分割合并文件
- PHP實(shí)現(xiàn)將多個(gè)文件中的內(nèi)容合并為新文件的方法示例
- PHP合并靜態(tài)文件詳解
- PHP實(shí)現(xiàn)的大文件切割與合并功能示例
相關(guān)文章
PHP如何使用array_unshift()在數(shù)組開(kāi)頭插入元素
這篇文章主要介紹了PHP如何使用array_unshift()在數(shù)組開(kāi)頭插入元素,文中通過(guò)示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友可以參考下2020-09-09
php類自動(dòng)加載失敗的處理方案及實(shí)例代碼
在本篇文章里小編給大家整理了一篇關(guān)于php類自動(dòng)加載失敗的處理方案及實(shí)例代碼,有興趣的朋友們可以學(xué)習(xí)參考下。2021-09-09
PHP中使用協(xié)同程序?qū)崿F(xiàn)合作多任務(wù)
這篇文章指導(dǎo)你通過(guò)使用協(xié)同程序來(lái)實(shí)施任務(wù)調(diào)度,通過(guò)實(shí)例實(shí)現(xiàn)對(duì)技術(shù)的理解。我將在前三節(jié)做一個(gè)簡(jiǎn)單的背景介紹。如果你已經(jīng)有了比較好的基礎(chǔ),可以直接跳到“協(xié)同多任務(wù)處理”一節(jié)2013-07-07
php使用ftp遠(yuǎn)程上傳文件類(完美解決主從文件同步問(wèn)題的方法)
下面小編就為大家?guī)?lái)一篇php使用ftp遠(yuǎn)程上傳文件類(完美解決主從文件同步問(wèn)題的方法)。小編覺(jué)得挺不錯(cuò)的,現(xiàn)在就分享給大家,也給大家做個(gè)參考。一起跟隨小編過(guò)來(lái)看看吧2016-09-09
使用PHP把HTML生成PDF文件的幾個(gè)開(kāi)源項(xiàng)目介紹
這篇文章主要介紹了使用PHP把HTML生成PDF文件的幾個(gè)開(kāi)源項(xiàng)目介紹,本文羅列了FPDF、DomPDF、TCPDF等項(xiàng)目的特點(diǎn),需要的朋友可以參考下2014-11-11

