Heim  >  Artikel  >  Backend-Entwicklung  >  Was Sie beim Lesen von Dateien mit PHP-Fread beachten sollten

Was Sie beim Lesen von Dateien mit PHP-Fread beachten sollten

高洛峰
高洛峰Original
2016-12-21 16:01:581298Durchsuche

Einführung in die PHP-Fread-Funktion

String fread (int handle, int length)

fread() liest bis zur Länge Bytes aus dem Dateizeigerhandle. Diese Funktion wird aufgerufen, nachdem die maximale Länge von Bytes gelesen wurde, oder wenn EOF erreicht ist, oder (für Netzwerk-Streams), wenn ein Paket verfügbar ist, oder (nach dem Öffnen eines User-Space-Streams) 8192 Bytes gelesen wurden .

fread()-Beispiel:

<?php
  $file = "data.txt";
  $fh = fopen($file, "rt");
  $userdata = fread($fh, filesize($file));
  fclose($fh);
?>

Einige Punkte, auf die Sie achten müssen, wenn Sie fread in PHP verwenden

1. fread-Lesen Lösung für Fehler beim Schreiben großer Dateien

Wenn bei der Verwendung von fread zum Lesen von Dateien der in php.ini festgelegte maximale Speichernutzungswert überschritten wird, wird das Problem mit der folgenden Methode behoben Problem beim Lesen großer Dateien:

<?
  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. Wie erkennt PHP fread() die Dateikodierung

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

fread gibt es in Form einer Zeichenfolge zurück. Wie identifiziert es also die in a.txt verwendete Codierungsmethode, um sicherzustellen, dass es nicht verstümmelt ist?

Zeichenkodierung wird in Dateioperationen von Versionen unter PHP 7.0 nicht erkannt.

Gibt Daten nur in Bytes aus, wenn sie mit der Zeichenkodierung der PHP-Quellcodedatei und dem ausgegebenen HTML übereinstimmen, können sie korrekt angezeigt werden.

3. Wenn fread eine Datei liest, gibt es immer ein weiteres Nullzeichen

$fileSize = filesize($filePath);
$handle = fopen($filePath, "rb");
while (!feof($handle)) {
    var_dump(fread($handle, $fileSize));
    //会多输出一次空字符
}

Wenn wir den obigen Code verwenden, um Beim Lesen einer Datei wird manchmal ein weiteres Nullzeichen angezeigt. Dies liegt daran, dass es sich bei der Datei um eine Textdatei handelt, die am Ende der Datei gespeichert ist. Wenn Sie sie mit rb öffnen, können Sie sie natürlich lesen das letzte Sonderbyte. Öffnen Sie es mit r und lesen Sie es mit fgets.

Ich hoffe, dieser Artikel kann allen helfen. Vielen Dank für Ihre Unterstützung dieser Website!

Weitere Artikel zu den Vorsichtsmaßnahmen beim Lesen von Dateien mit PHP-Fread finden Sie auf der chinesischen PHP-Website!


Stellungnahme:
Der Inhalt dieses Artikels wird freiwillig von Internetnutzern beigesteuert und das Urheberrecht liegt beim ursprünglichen Autor. Diese Website übernimmt keine entsprechende rechtliche Verantwortung. Wenn Sie Inhalte finden, bei denen der Verdacht eines Plagiats oder einer Rechtsverletzung besteht, wenden Sie sich bitte an admin@php.cn