2010-05-01 48 views

Respuesta

45

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

fread lee datos en bruto - se detendrá después de un (o por defecto) número especificado de bytes, independientemente de cualquier nueva línea que podría o no estar presente.


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

  • Si desea leer una línea, a partir de un archivo de texto, luego use fgets
  • Si desea leer algunos datos (no necesariamente una línea) de un archivo, entonces use fread.
0

fread() para datos binarios y fread tiene un límite en el número de caracteres se puede 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! 
} 

Número 5 es bytes de longitud han sido leídos.

0

La función fgets lee una sola línea de un archivo de texto. Está leyendo tanto tiempo hasta que se llega al final de la línea actual (o al final del archivo). Por lo tanto, si usted desea leer una línea de un archivo de texto, se debe utilizar fgets. El fread función no sólo lee hasta el final de la línea, pero al final del archivo [por ejemplo, fread ($ handle)] o tantos bytes como se especifique como un parámetro [p. fread ($ handle, 1024)]. Por lo tanto, si desea leer un archivo completo, no importa si se trata de un archivo de texto con todas las líneas que contienen datos en bruto o arbitrarias desde un archivo, se debe utilizar fread.

Cuestiones relacionadas