fread无法读取添加的新行

时间:2013-05-08 07:47:37

标签: php

我有这段代码将行写入new.txt(已包含2行)文件,然后将此txt内容复制(备份)到新的tmp.txt文件中 但是fread()一直缺少new.txt文件中的新行以复制到tmp.txt中 tmp.txt假设里面有3行,但缺少新添加的行。

$File ="new.txt";
$File2="tmp.txt";


//write into file
$handle = fopen ($File, 'a') or die("Cannot open File");    
fwrite($handle,"some string");
fclose($handle );

//copy file
$handle2= fopen ($File, 'r') or die("Cannot open File");
$content = fread($handle2, filesize($File));
fclose($handle2);   

$handle3 = fopen ($File2, 'w') or die("Cannot open File");  
fwrite($handle3,$content);
fclose($handle3 );

2 个答案:

答案 0 :(得分:-1)

命令fread()将要读取的内容的 length 作为第二个参数,而不是不同的文件大小。 无论如何,使用copy()而不是fread()来复制文件会更好:

//replacement for your copy file
copy($handle1, $handle2);

答案 1 :(得分:-1)

来自the documentation for filesize

  

注意:此功能的结果已缓存。有关详细信息,请参阅clearstatcache()

在该链接之后,您将获得以下附加信息,这些信息将完全回答您的问题:

  

当您使用stat()lstat()或受影响的函数列表(下面)中列出的任何其他函数时,PHP会缓存这些函数返回的信息,以便提供更快的性能。但是,在某些情况下,您可能希望清除缓存的信息。 例如,如果在单个脚本中多次检查同一文件,并且该文件在该脚本操作期间有被删除或更改的危险,则可以选择清除状态缓存。在这些情况下,您可以使用clearstatcache()函数清除PHP缓存文件的信息。

文档是你的朋友;用它!