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 相关文章推荐
php中根据某年第几天计算出日期年月日的代码
Feb 24 PHP
destoon数据库表说明汇总
Jul 15 PHP
php数组操作之键名比较与差集、交集赋值的方法
Nov 10 PHP
php返回字符串中所有单词的方法
Mar 09 PHP
浅析iis7.5安装配置php环境
May 10 PHP
10款PHP开源商城系统汇总介绍
Jul 23 PHP
PHP文件缓存类实现代码
Oct 26 PHP
Linux+Nginx+MySQL下配置论坛程序Discuz的基本教程
Dec 23 PHP
php array_keys 返回数组的键名
Oct 25 PHP
详解PHP数据压缩、加解密(pack, unpack)
Dec 17 PHP
PHP实现的注册,登录及查询用户资料功能API接口示例
Jun 06 PHP
PHP基于SimpleXML生成和解析xml的方法示例
Jul 17 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
免费手机号码归属地API查询接口和PHP使用实例分享
2014/04/10 PHP
php上传图片之时间戳命名(保存路径)
2014/08/15 PHP
php实现SAE上使用storage上传与下载文件的方法
2015/06/29 PHP
PHP对象的浅复制与深复制的实例详解
2017/10/26 PHP
为jquery.ui.dialog 增加“在当前鼠标位置打开”的功能
2009/11/24 Javascript
javascript两段代码,两个小技巧
2010/02/04 Javascript
JQuery 图片滚动轮播示例代码
2014/03/24 Javascript
jQuery实现ajax的叠加和停止(终止ajax请求)
2016/08/08 Javascript
js从输入框读取内容,比较两个数字的大小方法
2017/03/13 Javascript
jQuery插件FusionCharts绘制的3D环饼图效果示例【附demo源码】
2017/04/02 jQuery
nodejs 子进程正确的打开方式
2017/07/03 NodeJs
在vue项目中,使用axios跨域处理
2018/03/07 Javascript
微信小程序模拟cookie的实现
2018/06/20 Javascript
JavaScript日期工具类DateUtils定义与用法示例
2018/09/03 Javascript
js字符串处理之绝妙的代码
2019/04/05 Javascript
[57:12]完美世界DOTA2联赛循环赛 Inki vs Matador BO2第一场 10.31
2020/11/02 DOTA
python+opencv轮廓检测代码解析
2018/01/05 Python
Python 2.7中文显示与处理方法
2018/07/16 Python
python3基于OpenCV实现证件照背景替换
2018/07/18 Python
Django数据库连接丢失问题的解决方法
2018/12/29 Python
Python类的继承、多态及获取对象信息操作详解
2019/02/28 Python
pyinstaller打包单个exe后无法执行错误的解决方法
2019/06/21 Python
Python Pandas 如何shuffle(打乱)数据
2019/07/30 Python
基于Python实现ComicReaper漫画自动爬取脚本过程解析
2019/11/11 Python
Django-xadmin+rule对象级权限的实现方式
2020/03/30 Python
Python QTimer实现多线程及QSS应用过程解析
2020/07/11 Python
详解css3 Transition属性(平滑过渡菜单栏案例)
2017/09/05 HTML / CSS
美国农场商店:Blain’s Farm & Fleet
2020/01/17 全球购物
专营店会计助理岗位职责
2013/11/29 职场文书
先进事迹报告会主持词
2014/04/02 职场文书
计算机网络专业求职信
2014/06/05 职场文书
建筑安全责任书范本
2014/07/24 职场文书
机关领导干部作风整顿整改措施
2014/09/19 职场文书
小学教师年度个人总结
2015/02/05 职场文书
2016圣诞节贺卡寄语
2015/12/07 职场文书
诉讼和解协议书
2016/03/23 职场文书