2010-05-01 6 views

Répondre

45

fgets lit une ligne - c'est-à-dire qu'il s'arrête à un retour à la ligne.

fread lit données brutes - il cessera après un spécifié (ou par défaut) nombre d'octets, indépendamment de tout saut de ligne qui peut ou non être présent.


La vitesse est pas une raison d'utiliser l'un sur l'autre, comme ces deux fonctions juste ne font pas la même chose:

  • Si vous voulez lire une ligne, à partir d'un fichier texte, puis utilisez fgets
  • Si vous souhaitez lire certaines données (pas nécessairement une ligne) à partir d'un fichier, utilisez fread.
0

fread() pour les données binaires et fread a une limite sur le nombre de caractères que vous pouvez lire

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

Number 5 est octets de longueur ont été lus.

0

La fonction fgets lit une seule ligne à partir d'un fichier texte. Il lit si longtemps jusqu'à la fin de la ligne en cours (ou la fin du fichier) est atteint. Par conséquent, si vous souhaitez lire une ligne à partir d'un fichier texte, vous devez utiliser fgets. La fonction fread se lit non seulement jusqu'à la fin de la ligne, mais jusqu'à la fin du fichier [par ex. fread ($ handle)] ou autant d'octets que spécifié en tant que paramètre [par ex. fread ($ handle, 1024)]. Ainsi, si vous souhaitez lire un fichier complet, qu'il s'agisse d'un fichier texte contenant toutes des lignes ou des données brutes arbitraires d'un fichier, vous devez utiliser fread.

Questions connexes