Introduction à la fonction php fread
string fread (int handle, int length)
fread() lit jusqu'à la longueur des octets à partir du handle du pointeur de fichier. Cette fonction est appelée après avoir lu jusqu'à la longueur d'octets, ou lorsque EOF est atteint, ou (pour les flux réseau) lorsqu'un paquet est disponible, ou (après l'ouverture d'un flux d'espace utilisateur) 8192 octets ont été lus. La lecture du fichier s'arrêtera. .
Exemple de fread() :
<?php $file = "data.txt"; $fh = fopen($file, "rt"); $userdata = fread($fh, filesize($file)); fclose($fh); ?>
Quelques points auxquels vous devez faire attention lorsque vous utilisez fread en php
1. fread read Solution à l'erreur lors de l'écriture de fichiers volumineux
Lors de l'utilisation de fread pour lire des fichiers, si la valeur maximale d'utilisation de la mémoire définie dans php.ini est dépassée, une erreur sera affichée. La méthode suivante résout le problème. problème de lecture de fichiers volumineux :
<? set_time_limit(0);//设置脚本执行时间无限长 $flie="flexbuilder_linux_install_a5_112409.bin";//大文件超过php.ini中的内存配置 $fp=fopen($flie,"r"); $content=""; $filename="123.bin";//存为新文件 $handle=fopen($filename,"a");//写入方式打开,将文件指针指向文件末尾。如果文件不存在则尝试创建之 while(!feof($fp)){//测试文件指针是否到了文件结束的位置 $content=fread($fp,1024); fwrite($handle,$content); } fclose($fp); fclose($handle); echo "数据成功写入文件"; ?>
2. Comment php fread() identifie-t-il l'encodage du fichier
<?php $handler=fopen('a.txt','rb')//二进制方式打开 $content=fread($handler,1024); echo $content; ?>
fread renvoie sous la forme d'une chaîne, alors comment identifie-t-il la méthode d'encodage utilisée dans un.txt pour s'assurer qu'il n'est pas tronqué ?
L'encodage des caractères n'est pas reconnu dans les opérations sur les fichiers des versions inférieures à PHP 7.0.
Génie uniquement les données en octets. Si elles sont cohérentes avec le codage des caractères du fichier de code source php et le code HTML de sortie, elles peuvent être affichées correctement.
3. Lorsque fread lit un fichier, il y aura toujours un caractère nul supplémentaire
$fileSize = filesize($filePath); $handle = fopen($filePath, "rb"); while (!feof($handle)) { var_dump(fread($handle, $fileSize)); //会多输出一次空字符 }
Lorsque nous utilisons le code ci-dessus pour lire un fichier, parfois il y aura un caractère nul supplémentaire. En effet, vous êtes sur une plateforme WINDOWS. Le fichier est un fichier texte stocké sous forme de texte. Il y aura un octet spécial à la fin pour marquer la fin du fichier. Si vous l'ouvrez avec rb, vous pourrez naturellement le lire. le dernier octet spécial. Ouvrez-le avec r et lisez-le avec fgets.
J'espère que cet article pourra aider tout le monde, merci pour votre soutien à ce site !
Pour plus d'articles liés aux précautions de lecture de fichiers avec php fread, veuillez faire attention au site Web PHP chinois !