fgets () y fread () – ¿Cuál es la diferencia?

Entiendo las diferencias entre fgets() y fgetss() pero no entiendo la diferencia entre fgets() y fread() , ¿alguien puede aclarar este tema? ¿Cuál es más rápido? ¡Gracias!

fgets lee una línea , es decir, se detendrá en una nueva línea.

fread lee datos sin procesar : se detendrá después de un número de bytes especificado (o predeterminado) , independientemente de cualquier nueva línea que pueda estar o no presente.

La velocidad no es una razón para usar una sobre otra, ya que esas dos funciones simplemente no hacen lo mismo:

  • Si quieres leer una línea, desde un archivo de texto, entonces usa los fgets
  • Si desea leer algunos datos (no necesariamente una línea) de un archivo, utilice fread .

fread () para datos binarios y fread tiene un límite en la cantidad de caracteres que puedes leer

 $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! } 

El número 5 es la longitud de bytes que se han leído.

La función fgets lee una sola línea de un archivo de texto. Está leyendo tanto tiempo hasta que se alcanza el final de la línea actual (o el final del archivo). Por lo tanto, si desea leer una línea de un archivo de texto, debe usar fgets. La función fread no solo lee hasta el final de la línea, sino hasta el final del archivo [por ejemplo, fread ($ handle)] o tantos bytes como se especifique como parámetro [por ejemplo, fread ($ handle, 1024)]. Por lo tanto, si desea leer un archivo completo, sin importar si es un archivo de texto con todas las líneas que contienen o datos brutos arbitrarios de un archivo, debe usar fread.