可以' fread'被使用多次?

时间:2014-06-03 19:34:55

标签: php

<?php
   $myFile="php01.txt";
   $fh=fopen($myFile, 'r');
   $theData02=fread($fh, filesize($myFile));
   $theData03=fread($fh, 20);
   fclose($fh);
   echo $theData02;
   echo $theData03;
?>

这是我正在试验的代码。 我试过两次使用fread,发现只有第一个正在工作。 我不能两次使用fread?如果我想打印整个字符串及其中的一部分,我该怎么办?

3 个答案:

答案 0 :(得分:4)

第一个读取整个数据并将指针放在文件末尾。所以,第二个没有什么可读的......

尝试

$theData02 = fread($fh, filesize($myFile));
fseek($fh, 0);
$theData03 = fread($fh, 20);

答案 1 :(得分:2)

除非内部文件指针到达文件末尾,否则

fread()将读取。您将使用以下行到达文件的末尾:

$theData02=fread($fh, filesize($myFile));

然后你想再读一遍:

$theData03=fread($fh, 20);
但是什么?你已经读完了。


如果要从文件的开头(或文件中间的某个位置)再次读取,则需要使用fseek()修改文件指针:

fseek($fh, 0, SEEK_SET); // beginning of the file
fseek($fh, $offset, SEEK_SET); // somewhere in the middle of the file. 

// Note: SEEK_SET is the default value, I've just passed it for 
// educational purposes.

答案 2 :(得分:0)

PHP.NET fread()

  

只要满足以下条件之一,读取就会停止:

     

...

     

到达EOF(文件结尾)

$theData02=fread($fh, filesize($myFile));

您已经读取了所有文件(带有文件大小),因此读取停止。

以下代码将执行您想要的操作:

<?php
   $myFile="php01.txt";
   $fh=fopen($myFile, 'r');
   $theData02=fread($fh, filesize($myFile));
   $theData03=substr($theData02, 0, 20); // <= modification here, it reads 20 letters from the start of $theData02
   fclose($fh);
   echo $theData02;
   echo $theData03;
?>