Maison > développement back-end > tutoriel php > Choses à noter lors de la lecture de fichiers avec php fread

Choses à noter lors de la lecture de fichiers avec php fread

高洛峰
Libérer: 2023-03-03 20:34:01
original
1359 Les gens l'ont consulté

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);
?>
Copier après la connexion

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 "数据成功写入文件";
?>
Copier après la connexion

2. Comment php fread() identifie-t-il l'encodage du fichier

<?php
$handler=fopen(&#39;a.txt&#39;,&#39;rb&#39;)//二进制方式打开
$content=fread($handler,1024);
echo $content;
?>
Copier après la connexion

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));
    //会多输出一次空字符
}
Copier après la connexion

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 !


Étiquettes associées:
source:php.cn
Déclaration de ce site Web
Le contenu de cet article est volontairement contribué par les internautes et les droits d'auteur appartiennent à l'auteur original. Ce site n'assume aucune responsabilité légale correspondante. Si vous trouvez un contenu suspecté de plagiat ou de contrefaçon, veuillez contacter admin@php.cn
Tutoriels populaires
Plus>
Derniers téléchargements
Plus>
effets Web
Code source du site Web
Matériel du site Web
Modèle frontal