更改文件的单个字符

时间:2012-05-07 18:58:00

标签: php file-io

我需要更改文件中的单个字符 我宁愿不使用像这样的辅助文件(伪代码):
read(theFile)

change(theFile)

write(theFile2)

erase(theFile)

rename(theFile2,theFile)

由于这样,某些进程在实际擦除时可能需要该文件 相反,我希望对自己的文件进行操作,因为这样,我依靠服务器的操作系统来处理对文件的计时和进程访问。

2 个答案:

答案 0 :(得分:4)

您需要使用flock来锁定文件。示例基于PHP docs

中的代码
<?php

$fp = fopen("file.txt", "r+");

if (flock($fp, LOCK_EX)) {  // acquire an exclusive lock
    //make your changes
    fflush($fp);            // flush output before releasing the lock
    flock($fp, LOCK_UN);    // release the lock
} else {
    echo "Couldn't get the lock!";
}

fclose($fp);

?>

答案 1 :(得分:1)

可以进行编辑,但根据您的需要进行编辑可能会非常困难。例如,此代码:

<?php

$r = fopen("test.txt", "c+");
fseek($r, 50);

// write out
fwrite($r, "TESTING");
fclose($r);

将打开一个名为test.txt的文件,并将文件 TESTING 插入50个字节的文件中。一旦关闭句柄,文件将随更改一起保存:无需做一个完整的替换。通过这种方式,您可以数据添加到文件的内部。我无法在任何PHP函数中看到删除部分文件,因此如果您需要删除任何内容,那么您可能会运气不好,并且必须覆盖整个文件。< / p>

编辑:从fopen文档中可以看出,这需要PHP 5.2.6或更高版本。