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插入中文到sqlserver 2008里出现乱码的解决办法分享
Jul 19 PHP
PHP表单递交控件名称含有点号(.)会被转化为下划线(_)的处理方法
Jan 06 PHP
linux环境apache多端口配置虚拟主机的方法深入介绍
Jun 09 PHP
PHP判断一个gif图片是否为动态图片的方法
Nov 19 PHP
php采用curl实现伪造IP来源的方法
Nov 21 PHP
smarty模板引擎从配置文件中获取数据的方法
Jan 22 PHP
ecshop实现smtp发送邮件
Feb 03 PHP
1亿条数据如何分表100张到Mysql数据库中(PHP)
Jul 29 PHP
PHP控制前台弹出对话框的实现方法
Aug 21 PHP
php基于ob_start(ob_gzhandler)实现网页压缩功能的方法
Feb 18 PHP
Thinkphp5+uploadify实现的文件上传功能示例
May 26 PHP
PHP 时间处理类Carbon
May 20 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+oracle 分页类
2006/10/09 PHP
php页面缓存方法小结
2015/01/10 PHP
php实现curl模拟ftp上传的方法
2015/07/29 PHP
基于php判断客户端类型
2016/10/14 PHP
PHP面相对象中的重载与重写
2017/02/13 PHP
php生成图片缩略图功能示例
2017/02/22 PHP
PHP实现模拟http请求的方法分析
2017/12/20 PHP
6个常见的 PHP 安全性攻击实例和阻止方法
2020/12/16 PHP
jquery 操作日期、星期、元素的追加的实现代码
2012/02/07 Javascript
javascript 得到文件后缀名的思路及实现
2020/05/09 Javascript
由点击页面其它地方隐藏div所想到的jQuery的delegate
2013/08/29 Javascript
javascript制作的cookie封装及使用指南
2015/01/02 Javascript
JQuery判断checkbox是否选中及其它复选框操作方法合集
2015/06/01 Javascript
基于jQuery和CSS3制作响应式水平时间轴附源码下载
2015/12/20 Javascript
Bootstrap模块dropdown实现下拉框响应
2016/05/22 Javascript
Vue.js实现一个SPA登录页面的过程【推荐】
2017/04/29 Javascript
vue2.0 路由不显示router-view的解决方法
2018/03/06 Javascript
深入理解Angularjs 脏值检测
2018/10/12 Javascript
python语言使用技巧分享
2016/05/31 Python
python编码总结(编码类型、格式、转码)
2016/07/01 Python
回调函数的意义以及python实现实例
2017/06/20 Python
Python3的介绍、安装和命令行的认识(推荐)
2018/10/20 Python
Python 从相对路径下import的方法
2018/12/04 Python
python实现多张图片拼接成大图
2019/01/15 Python
Python StringIO及BytesIO包使用方法解析
2020/06/15 Python
Python实现SMTP邮件发送
2020/06/16 Python
临床医学大学生求职信
2013/09/28 职场文书
党员自我评价分享
2013/12/13 职场文书
2014年中班元旦活动方案
2014/02/14 职场文书
门卫岗位职责说明书
2014/08/18 职场文书
作风整顿个人剖析材料
2014/10/06 职场文书
保险公司客户经理岗位职责
2015/04/09 职场文书
2015年新教师工作总结
2015/04/28 职场文书
2015年路政工作总结
2015/05/22 职场文书
校园之声广播稿
2015/08/18 职场文书
关于springboot配置druid数据源不生效问题(踩坑记)
2021/09/25 Java/Android