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 字符转义 注意事项
May 27 PHP
php自动加载机制的深入分析
Jun 08 PHP
解析php中var_dump,var_export,print_r三个函数的区别
Jun 21 PHP
解析link_mysql的php版
Jun 30 PHP
php引用传值实例详解学习
Nov 06 PHP
CMS中PHP判断系统是否已经安装的方法示例
Jul 26 PHP
PHP常用技术文之文件操作和目录操作总结
Sep 27 PHP
php实现上传图片保存到数据库的方法
Feb 11 PHP
crontab无法执行php的解决方法
Jan 25 PHP
php数据库的增删改查 php与javascript之间的交互
Aug 31 PHP
PHP数组式访问接口ArrayAccess用法分析
Dec 28 PHP
通过代码实例解析PHP session工作原理
Dec 11 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 中的str_replace 函数总结
2007/04/27 PHP
discuz 首页四格:最新话题+最新回复+热门话题+精华文章插件
2007/08/19 PHP
PHP超级全局变量数组小结
2012/10/04 PHP
PHP 使用redis简单示例分享
2015/03/05 PHP
Laravel接收前端ajax传来的数据的实例代码
2017/07/20 PHP
PHP多维数组指定多字段排序的示例代码
2018/05/16 PHP
Laravel 自动生成验证的实例讲解:login / logout
2019/10/14 PHP
jquery BS,dialog控件自适应大小
2009/07/06 Javascript
如何确保JavaScript的执行顺序 之实战篇
2011/03/03 Javascript
jQuery-serialize()输出序列化form表单值的方法
2012/12/26 Javascript
使用JS读秒使用示例
2013/09/21 Javascript
jquery ajax双击div可直接修改div中的内容
2016/03/04 Javascript
Jquery Easyui验证组件ValidateBox使用详解(20)
2016/12/18 Javascript
详解从新建vue项目到引入组件Element的方法
2017/08/29 Javascript
不使用 JS 匿名函数理由
2017/11/17 Javascript
vue自定义指令用法经典实例小结
2019/03/16 Javascript
前后端常见的几种鉴权方式(小结)
2019/08/04 Javascript
JS对象属性的检测与获取操作实例分析
2020/03/17 Javascript
windows如何把已安装的nodejs高版本降级为低版本(图文教程)
2020/12/14 NodeJs
Python3.x和Python2.x的区别介绍
2013/02/12 Python
跟老齐学Python之关于循环的小伎俩
2014/10/02 Python
Python中MySQL数据迁移到MongoDB脚本的方法
2016/04/28 Python
利用python写个下载teahour音频的小脚本
2017/05/08 Python
Python单向链表和双向链表原理与用法实例详解
2018/08/31 Python
Python将json文件写入ES数据库的方法
2019/04/10 Python
使用Html5 Stream开发实时监控系统
2020/06/02 HTML / CSS
mysql_pconnect()和mysql_connect()有什么区别
2012/05/25 面试题
在Java开发中如何选择使用哪种集合类
2016/08/09 面试题
explicit和implicit的含义
2012/11/15 面试题
就业自荐书
2013/12/05 职场文书
党的群众路线教育实践活动学习心得体会
2014/03/03 职场文书
党员民主生活会整改措施
2014/09/26 职场文书
《日月潭》教学反思
2016/02/20 职场文书
浅谈MySQL user权限表
2021/06/18 MySQL
MySQL中CURRENT_TIMESTAMP的使用方式
2021/11/27 MySQL
使用 CSS 构建强大且酷炫的粒子动画效果
2022/08/14 HTML / CSS