从同一个文件 - PHP写入和读取

时间:2015-04-21 06:59:55

标签: php

我正在尝试写入文件,然后从同一文件中读取数据。但有时我遇到这个问题,文件读取过程即使在文件写入完成之前就开始了。我该如何解决这个问题?如何在继续前进之前完成文件编写过程?

//写入文件

$string= <12 kb of specific data which i need>;
$filename.="/ttc/";
$filename.="datasave.html";
if($fp = fopen($filename, 'w')) 
{
    fwrite($fp, $string);
    fclose($fp);
}

//写入文件

$handle = fopen($filename, "r")  ;
$datatnc = fread($handle, filesize($filename));
$datatnc = addslashes($datatnc);
fclose($handle);

3 个答案:

答案 0 :(得分:1)

我已经提到了解决方案的URL。我实现了同样的。如果您希望我复制该链接中的文本,那么它是:

$file = fopen("test.txt","w+");

    // exclusive lock

if (flock($file,LOCK_EX))
{
    fwrite($file,"Write something");
    // release lock
    flock($file,LOCK_UN);
}
else
{
    echo "Error locking file!";
}

fclose($file);

答案 1 :(得分:0)

写入后使用fclose关闭文件指针,然后再次fopen打开它。

答案 2 :(得分:0)

它不起作用的原因是,当您完成向文件中写入字符串后,文件指针指向文件的末尾,因此稍后当您尝试使用相同的文件指针读取相同的文件时,就再也没有了阅读。您要做的就是将指针倒退到文件的开头。这是一个示例:

<?php
$fileName = 'test_file';
$savePath = "tmp/tests/" . $fileName;
//create file pointer handle
$fp = fopen($savePath, 'r+');
fwrite($fp, "Writing and Reading with same fopen handle!");
//Now rewind file pointer to start reading
rewind($fp);
//this will output "Writing and Reading with same fopen handle!"
echo fread($fp, filesize($savePath));
fclose($fp);
 ?>

有关rewind()方法http://php.net/manual/en/function.rewind.php

的更多信息,