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 相关文章推荐
discuz Passport 通行证 整合笔记
Jun 30 PHP
一个PHP的QRcode类与大家分享
Nov 13 PHP
PHP 动态生成静态HTML页面示例代码
Jan 15 PHP
PHP查找数值数组中不重复最大和最小的10个数的方法
Apr 20 PHP
php循环table实现一行两列显示的方法
Jun 04 PHP
PHP中余数、取余的妙用
Jun 29 PHP
php示例详解Constructor Prototype Pattern 原型模式
Oct 15 PHP
PHP扩展开发教程(总结)
Nov 04 PHP
php字符串操作针对负值的判断分析
Jul 28 PHP
PHP简单实现冒泡排序的方法
Dec 26 PHP
redis+php实现微博(一)注册与登录功能详解
Sep 23 PHP
详解阿里云视频直播PHP-SDK接入教程
Jul 09 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 反向排序和随机排序代码
2010/06/30 PHP
遭遇php的in_array低性能问题
2013/09/17 PHP
php中怎么搜索相关联数组键值及获取之
2013/10/17 PHP
PHP的自定义模板引擎
2017/03/24 PHP
用php+ajax新建流程(请假、进货、出货等)
2017/06/11 PHP
XENON基于JSON变种
2010/07/27 Javascript
基于jquery的一个OutlookBar类,动态创建导航条
2010/11/19 Javascript
web的各种前端打印方法之jquery打印插件PrintArea实现网页打印
2013/01/09 Javascript
jQuery实现回车键(Enter)切换文本框焦点的代码实例
2014/05/05 Javascript
Sea.JS知识总结
2016/05/05 Javascript
javascript时间差插件分享
2016/07/18 Javascript
js表单登陆验证示例
2016/10/19 Javascript
Vue中对拿到的数据进行A-Z排序的实例
2018/09/25 Javascript
angularjs使用div模拟textarea文本框的方法
2018/10/02 Javascript
Vuex 使用 v-model 配合 state的方法
2018/11/13 Javascript
小程序中this.setData的使用和注意事项
2019/08/28 Javascript
JS实现滑动导航效果
2020/01/14 Javascript
vue设置全局访问接口API地址操作
2020/08/14 Javascript
js实现贪吃蛇游戏 canvas绘制地图
2020/09/09 Javascript
python各种语言间时间的转化实现代码
2016/03/23 Python
在Django同1个页面中的多表单处理详解
2017/01/25 Python
python+requests+unittest API接口测试实例(详解)
2017/06/10 Python
python爬虫爬取淘宝商品信息(selenum+phontomjs)
2018/02/24 Python
使用Windows批处理和WMI设置Python的环境变量方法
2019/08/14 Python
python openvc 裁剪、剪切图片 提取图片的行和列
2019/09/19 Python
Python使用docx模块实现刷题功能代码
2020/02/13 Python
Python应用实现双指数函数及拟合代码实例
2020/06/19 Python
python 牛顿法实现逻辑回归(Logistic Regression)
2020/10/15 Python
Wiggle美国:英国骑行、跑步、游泳、铁人三项商店
2018/10/27 全球购物
Java中实现多态的机制是什么?
2014/12/07 面试题
建筑结构施工专业推荐信
2014/02/21 职场文书
企业标语口号
2014/06/10 职场文书
高中国旗下的演讲稿
2014/08/28 职场文书
博士生专家推荐信
2014/09/26 职场文书
交通运输局四风问题对照检查材料思想汇报
2014/10/09 职场文书
Python 数据可视化神器Pyecharts绘制图像练习
2022/02/28 Python