web-dev-qa-db-fra.com

fgets () et fread () - Quelle est la différence?

Je comprends les différences entrefgets()etfgetss()mais je ne comprends pas la différence entrefgets()etfread(), quelqu'un peut-il clarifier ce sujet? Lequel est le plus rapide? Merci!

30
Alix Axel

fgets lit une ligne - c’est-à-dire qu’elle s’arrêtera à une nouvelle ligne.

fread lit données brutes - il s'arrêtera après un nombre d'octets spécifié (ou par défaut), indépendamment de toute nouvelle ligne qui pourrait être ou ne pas être présente.


La vitesse n’est pas une raison pour utiliser l’une sur l’autre, car ces deux fonctions ne font tout simplement pas la même chose:

  • Si vous voulez lire une ligne, à partir d’un fichier texte, utilisez fgets
  • Si vous voulez lire des données (pas nécessairement une ligne)} à partir d'un fichier, utilisez fread .
49
Pascal MARTIN

La fonction fgets lit une seule ligne à partir d’un fichier texte. Il lit jusqu'à ce que la fin de la ligne en cours (ou la fin du fichier) soit atteinte. Par conséquent, si vous souhaitez lire une ligne d'un fichier texte, vous devez utiliser fgets. La fonction fread lit non seulement jusqu'à la fin de la ligne, mais également jusqu'à la fin du fichier. fread ($ handle)] ou autant d’octets spécifiés 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 les lignes ou des données brutes arbitraires d’un fichier, vous devez utiliser fread.

0
Pritom Das

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

Le nombre 5 est la longueur octets ont été lus. 

0
zloctb