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 相关文章推荐
桌面中心(四)数据显示
Oct 09 PHP
增加反向链接的101个方法 站长推荐
Jan 31 PHP
PHP 数组遍历方法大全(foreach,list,each)
Jun 30 PHP
PHP运行模式的深入理解
Jun 03 PHP
apache和PHP如何整合在一起
Oct 12 PHP
PHP下SSL加密解密、验证、签名方法(很简单)
Jun 28 PHP
PHP解压tar.gz格式文件的方法
Feb 14 PHP
Zend Framework连接Mysql数据库实例分析
Mar 19 PHP
CentOS下搭建PHP环境与WordPress博客程序的全流程总结
May 07 PHP
zend framework重定向方法小结
May 28 PHP
分享一个漂亮的php验证码类
Sep 29 PHP
php设计模式之迭代器模式实例分析【星际争霸游戏案例】
Apr 07 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使用正则表达式获取微博中的话题和对象名
2015/07/18 PHP
表单提交验证类
2006/07/14 Javascript
JavaScript中令你抓狂的魔术变量
2006/11/30 Javascript
Web版彷 Visual Studio 2003 颜色选择器
2007/01/09 Javascript
textarea的value是html文件源代码,存成html文件的代码
2007/04/20 Javascript
javascript入门·动态的时钟,显示完整的一些方法,新年倒计时
2007/10/01 Javascript
设置下载不需要倒计时cookie(倒计时代码)
2008/11/19 Javascript
jQuery JSON实现无刷新三级联动实例探讨
2013/05/28 Javascript
js与jquery实时监听输入框值的oninput与onpropertychange方法
2015/02/05 Javascript
JavaScript基本语法讲解
2015/06/03 Javascript
js实现鼠标点击文本框自动选中内容的方法
2015/08/20 Javascript
详解JavaScript操作HTML DOM的基本方式
2015/10/21 Javascript
js实现拖拽效果(构造函数)
2015/12/14 Javascript
JS弹出层遮罩,隐藏背景页面滚动条细节优化分析
2016/04/29 Javascript
巧方法 JavaScript获取超链接的绝对URL地址
2016/06/14 Javascript
浅谈jquery.form.js的ajaxSubmit和ajaxForm的使用
2016/09/09 Javascript
JavaScript的new date等日期函数在safari中遇到的坑
2016/10/24 Javascript
AngularJS学习笔记(三)数据双向绑定的简单实例
2016/11/08 Javascript
深入理解在JS中通过四种设置事件处理程序的方法
2017/03/02 Javascript
Async Validator 异步验证使用说明
2017/07/03 Javascript
angular2组件中定时刷新并清除定时器的实例讲解
2018/08/31 Javascript
design vue 表格开启列排序的操作
2020/10/28 Javascript
在类Unix系统上开始Python3编程入门
2015/08/20 Python
Python的SimpleHTTPServer模块用处及使用方法简介
2018/01/22 Python
Python+Tensorflow+CNN实现车牌识别的示例代码
2019/10/11 Python
Python嵌套函数,作用域与偏函数用法实例分析
2019/12/26 Python
解决Python图形界面中设置尺寸的问题
2020/03/05 Python
Python错误的处理方法
2020/06/23 Python
HTML5 video标签(播放器)学习笔记(一):使用入门
2015/04/24 HTML / CSS
销售业务实习自我鉴定
2013/09/23 职场文书
群众路线教育实践活动个人对照检查材料
2014/09/22 职场文书
群众路线党员个人整改措施
2014/10/27 职场文书
2015年除四害工作总结
2015/07/23 职场文书
六一亲子活动感想
2015/08/07 职场文书
德劲DE1105机评
2022/04/05 无线电
springboot应用服务启动事件的监听实现
2022/04/06 Java/Android