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 ADODB使用方法集锦
Mar 25 PHP
PHP Smarty生成EXCEL文档的代码
Aug 23 PHP
Discuz Uchome ajaxpost小技巧
Jan 04 PHP
PHP的autoload机制的实现解析
Sep 15 PHP
浅析PHP中的字符串编码转换(自动识别原编码)
Jul 02 PHP
搭建Vim为自定义的PHP开发工具的一些技巧
Dec 11 PHP
详解WordPress中用于更新和获取用户选项数据的PHP函数
Mar 08 PHP
PHP实现超简单的SSL加密解密、验证及签名的方法示例
Aug 28 PHP
php删除一个路径下的所有文件夹和文件的方法
Feb 07 PHP
thinkPHP框架动态配置用法实例分析
Jun 14 PHP
PHP实现PDO操作mysql存储过程示例
Feb 13 PHP
PHP之header函数详解
Mar 02 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的ob_start来生成静态页面的方法分析
2011/03/09 PHP
实用的PHP带公钥加密类分享(每次加密结果都不一样哦)
2014/08/20 PHP
php缓冲输出实例分析
2015/01/05 PHP
深入理解PHP内核(一)
2015/11/10 PHP
php根据数据id自动生成编号的实现方法
2016/10/16 PHP
处理文本部分内容的TextRange对象应用实例
2014/07/29 Javascript
Active控件问题小结(附解决办法)
2016/06/09 Javascript
JS图片定时翻滚效果实现方法
2016/06/21 Javascript
利用jQuery的动画函数animate实现豌豆发射效果
2016/08/28 Javascript
js表单登陆验证示例
2016/10/19 Javascript
Angularjs通过指令监听ng-repeat渲染完成后执行脚本的方法
2016/12/31 Javascript
常用的javascript设计模式
2017/01/11 Javascript
js实现文字跑马灯效果
2017/02/23 Javascript
详解Vue中状态管理Vuex
2017/05/11 Javascript
NodeJS链接MySql数据库的操作方法
2017/06/27 NodeJs
关于TypeScript中import JSON的正确姿势详解
2017/07/25 Javascript
使用Dropzone.js上传的示例代码
2017/10/10 Javascript
Vue的土著指令和自定义指令实例详解
2018/02/04 Javascript
Vue写一个简单的倒计时按钮功能
2018/04/20 Javascript
在Layui中操作数据表格,给指定单元格添加事件示例
2019/10/26 Javascript
apache部署python程序出现503错误的解决方法
2017/07/24 Python
Python实现公历(阳历)转农历(阴历)的方法示例
2017/08/22 Python
Python socket实现的简单通信功能示例
2018/08/21 Python
pytorch permute维度转换方法
2018/12/14 Python
Django使用redis缓存服务器的实现代码示例
2019/04/28 Python
露营世界:Camping World
2017/02/02 全球购物
长青弘远的面试题
2012/06/09 面试题
工程师自我评价怎么写
2013/09/19 职场文书
班风学风建设方案
2014/05/06 职场文书
送温暖献爱心活动总结
2014/07/08 职场文书
学校领导班子对照检查材料
2014/08/28 职场文书
财务稽核岗位职责
2015/04/13 职场文书
2015年煤矿安全工作总结
2015/05/23 职场文书
2016高考寄语或鼓励的话语
2015/12/04 职场文书
六年级作文之预言作文
2019/10/25 职场文书
mysql外连接与内连接查询的不同之处
2021/06/03 MySQL