代码之家  ›  专栏  ›  技术社区  ›  Alix Axel

fgets()和fread()-有什么区别?

  •  30
  • Alix Axel  · 技术社区  · 16 年前

    我理解 fgets() 和 fgetss() 但我不明白 和 fread()

    3 回复  |  直到 16 年前
        1
  •  57
  •   rphv    10 年前

    fgets 阅读 一条线 --也就是说,它将在换行时停止。

    fread 原始数据 --它将在指定时间后停止 (或默认) 字节数,与可能存在或不存在的任何换行无关。


    速度不是使用一个函数而不是另一个函数的理由,因为这两个函数的作用不同:

        2
  •  1
  •   zloctb    10 年前

    fread()表示二进制数据,fread对可以读取的字符数有限制

    $source_file = fopen( $filename, "r" ) or die("Couldn't open $filename");
    while (!feof($source_file)) {
        $buffer = fread($source_file, 5);  
       var_dump($buffer); //return string with length 5 chars!
    }
    

    数字5是已读字节的长度。

        3
  •  0
  •   Pritom Das    10 年前

    函数fgets从文本文件中读取一行。它一直在读取,直到到达当前行的结尾(或文件的结尾)。因此,如果要从文本文件中读取一行,应该使用fgets。

        4
  •  0
  •   Abhishek Pai    6 年前

    fgets($filename,$bytes) fgets通常读取$bytes-1个数据量,并在换行符或EOF(文件结尾)处停止,以先到者为准。如果未指定字节,则默认值为1024字节。

    fread($filename,$bytes) fread读取的数据量正好是$bytes,并且只在EOF时停止。

        5
  •  0
  •   Kathryn Jackson    6 年前

    公认的答案是正确的,但还有一种情况是错误的 fread 停止阅读。 弗雷德 块限制为8192字节。我发现这一点的时候,我得到了不同的结果 fread($stream, 8300) fget($stream, 8300)

    从 fread

    如果流是读缓冲的,并且它不代表普通文件,则最多进行一次读取,读取的字节数等于块大小(通常为8192);根据先前缓冲的数据,返回数据的大小可能大于块大小。

    推荐文章