我有一个大文件“file.txt”
我想从文件中读取一个特定的行,更改一些内容,然后将该行重新写回文件中的位置。
由于它是一个大文件,我不想在读取或写入过程中读取整个文件,我只想访问那一行。
我正在使用它来检索所需的行:
$myLine = 100;
$file = new SplFileObject('file.txt');
$file->seek($myLine-1);
$oldline = $file->current();
$newline=str_replace('a','b',$oldline);
现在如何编写此$换行符来替换文件中的旧行?
答案 0 :(得分:0)
您可以使用此功能:
function injectData($file, $data, $position) {
$temp = fopen('php://temp', "rw+");
$fd = fopen($file, 'r+b');
fseek($fd, $position);
stream_copy_to_stream($fd, $temp); // copy end
fseek($fd, $position); // seek back
fwrite($fd, $data); // write data
rewind($temp);
stream_copy_to_stream($temp, $fd); // stich end on again
fclose($temp);
fclose($fd);
}
我是从PHP what is the best way to write data to middle of file without rewriting file
获得的