php fread读取文件注意事项


Posted in PHP onSeptember 24, 2016

php fread函数介绍

string fread ( int handle, int length )

fread() 从文件指针 handle 读取最多 length 个字节。该函数在读取完最多 length 个字节数,或到达 EOF 的时候,或(对于网络流)当一个包可用时,或(在打开用户空间流之后)已读取了 8192 个字节时就会停止读取文件。

fread()实例:

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

php使用fread需要注意的几点

1、fread读取写入大文件出错的解决办法

使用fread读取文件时如果超过php.ini中设置的最大内存使用值时 会提示错误,下面的方法解决读取大文件的问题:

<? 
  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、php fread()是如何识别文件编码的

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

fread以字符串形式返回,那它是如何识别a.txt使用的编码方式的呢,才能保证不乱码的呢?

PHP7.0以下的版本的文件操作中没有识别字符编码。

只是按字节数据输出,如果和php源码文件和输出的html的字符编码一致就能正确显示。

 3、fread读取文件总是会多一个空字符

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

当我们使用上面代码读取文件,有时会多一个空字符。这是因为你是WINDOWS平台,文件是文本打开存储的内容,末尾会有一个特殊字节标识文件结束,你用rb打开自然就可以读到最后那个特殊字节了。用r打开,fgets读吧。

通过此文希望能帮助到大家,谢谢大家对本站的支持!

PHP 相关文章推荐
如何在WIN2K下安装PHP4.04
Oct 09 PHP
Ajax PHP分页演示
Jan 02 PHP
dedecms 批量提取第一张图片最为缩略图的代码(文章+软件)
Oct 29 PHP
PHP 自定义错误处理函数的使用详解
May 10 PHP
PHP代码保护--Zend Guard的使用详解
Jun 03 PHP
PHP在线生成二维码(google api)的实现代码详解
Jun 04 PHP
一个经典实用的PHP图像处理类分享
Nov 18 PHP
PHP实现的简单三角形、矩形周长面积计算器分享
Nov 18 PHP
php获取YouTube视频信息的方法
Feb 11 PHP
PHP中的traits简单使用实例
May 13 PHP
php版微信公众平台开发之验证步骤实例详解
Sep 23 PHP
Laravel Reponse响应客户端示例详解
Sep 03 PHP
一个简单安全的PHP验证码类、PHP验证码
Sep 24 #PHP
jquery不支持toggle()高(新)版本的问题解决
Sep 24 #PHP
php getcwd与dirname(__FILE__)区别详解
Sep 24 #PHP
mysql desc(DESCRIBE)命令实例讲解
Sep 24 #PHP
mysql alter table命令修改表结构实例详解
Sep 24 #PHP
Ajax和PHP正则表达式验证表单及验证码
Sep 24 #PHP
mysql查找删除重复数据并只保留一条实例详解
Sep 24 #PHP
You might like
php表单提交问题的解决方法
2011/04/12 PHP
执行、获取远程代码返回:file_get_contents 超时处理的问题详解
2013/06/25 PHP
php socket通信简单实现
2016/11/18 PHP
javascript 避免闭包引发的问题
2009/03/17 Javascript
JS判断是否为数字,是否为整数,是否为浮点数的代码
2010/04/24 Javascript
extjs 3.31 TreeGrid实现静态页面加载json到TreeGrid里面
2013/04/02 Javascript
js调用后台servlet方法实例
2013/06/09 Javascript
JQuery触发事件例如click
2013/09/11 Javascript
jquery如何判断表格同一列不同行input数据是否重复
2014/05/14 Javascript
jQuery随机密码生成的方法
2015/03/09 Javascript
Javascript之BOM(window对象)详解
2016/05/25 Javascript
微信小程序 数组中的push与concat的区别
2017/01/05 Javascript
vue router自动判断左右翻页转场动画效果
2017/10/10 Javascript
9种改善AngularJS性能的方法
2017/11/28 Javascript
5 种JavaScript编码规范
2018/01/30 Javascript
jQuery 防止相同的事件快速重复触发方法
2018/02/08 jQuery
Vue+axios封装请求实现前后端分离
2020/10/23 Javascript
js实现简单商品筛选功能
2021/02/02 Javascript
Python UnicodeEncodeError: 'gbk' codec can't encode character 解决方法
2015/04/24 Python
python 日志增量抓取实现方法
2018/04/28 Python
Python实现修改IE注册表功能示例
2018/05/10 Python
解决PySide+Python子线程更新UI线程的问题
2019/01/11 Python
对Python中创建进程的两种方式以及进程池详解
2019/01/14 Python
简单了解python数组的基本操作
2019/11/26 Python
html5使用canvas压缩图片的示例代码
2018/09/11 HTML / CSS
html5 canvas 实现光线沿不规则路径运动
2020/04/20 HTML / CSS
中西医结合临床医学专业大学生自荐信
2013/09/28 职场文书
最新会计专业求职信范文
2014/01/28 职场文书
幼儿园元旦家长感言
2014/02/27 职场文书
主办会计岗位职责
2014/03/13 职场文书
加多宝凉茶广告词
2014/03/18 职场文书
课前一分钟演讲稿
2014/08/26 职场文书
简单的离婚协议书范本
2014/11/16 职场文书
《窃读记》教学反思
2016/02/18 职场文书
各类场合主持词开场白范文集锦
2019/08/16 职场文书
vue3中的组件间通信
2021/03/31 Vue.js