关于php fread()使用技巧


Posted in PHP onJanuary 22, 2010

说明
string fread ( int handle, int length )
fread() 从文件指针 handle 读取最多 length 个字节。该函数在读取完最多 length 个字节数,或到达 EOF 的时候,或(对于网络流)当一个包可用时,或(在打开用户空间流之后)已读取了 8192 个字节时就会停止读取文件,视乎先碰到哪种情况。
返回所读取的字符串,如果出错返回 FALSE。

<?php 
// get contents of a file into a string 
$filename = "/usr/local/something.txt"; 
$handle = fopen($filename, "r"); 
$contents = fread($handle, filesize ($filename)); 
fclose($handle); 
?>

警告
在区分二进制文件和文本文件的系统上(如 Windows)打开文件时,fopen() 函数的 mode 参数要加上 'b'。
<?php 
$filename = "c:\\files\\somepic.gif"; 
$handle = fopen($filename, "rb"); 
$contents = fread($handle, filesize ($filename)); 
fclose($handle); 
?>

警告
当从任何不是普通本地文件读取时,例如在读取从远程文件或 popen() 以及 proc_open() 返回的流时,读取会在一个包可用之后停止。这意味着应该如下例所示将数据收集起来合并成大块。
<?php 
// 对 PHP 5 及更高版本 
$handle = fopen("http://www.example.com/", "rb"); 
$contents = stream_get_contents($handle); 
fclose($handle); 
?> <?php 
$handle = fopen ("http://www.example.com/", "rb"); 
$contents = ""; 
while (!feof($handle)) { 
$contents .= fread($handle, 8192); 
} 
fclose($handle); 
?>

注意: 如果只是想将一个文件的内容读入到一个字符串中,用 file_get_contents(),它的性能比上面的代码好得多。
额外:
file_get_contents
(PHP 4 >= 4.3.0, PHP 5)
file_get_contents -- 将整个文件读入一个字符串
说明
string file_get_contents ( string filename [, bool use_include_path [, resource context [, int offset [, int maxlen]]]] )

和 file() 一样,只除了 file_get_contents() 把文件读入一个字符串。将在参数 offset 所指定的位置开始读取长度为 maxlen 的内容。如果失败,file_get_contents() 将返回 FALSE。
file_get_contents() 函数是用来将文件的内容读入到一个字符串中的首选方法。如果操作系统支持还会使用内存映射技术来增强性能。

PHP 相关文章推荐
JAVA/JSP学习系列之二
Oct 09 PHP
在字符串中把网址改成超级链接
Oct 09 PHP
初级的用php写的采集程序
Mar 16 PHP
对squid中refresh_pattern的一些理解和建议
Apr 17 PHP
PHP中实现中文字符进制转换原理分析
Dec 06 PHP
iis下php mail函数的sendmail配置方法(官方推荐)
Apr 25 PHP
如何设置mysql允许外网访问
Jun 04 PHP
显示youtube视频缩略图和Vimeo视频缩略图代码分享
Feb 13 PHP
PHP的serialize序列化数据以及JSON格式化数据分析
Oct 10 PHP
老生常谈php 正则中的i,m,s,x,e分别表示什么
Mar 02 PHP
Laravel框架模板继承操作示例
Jun 11 PHP
java解析json方法总结
May 16 PHP
PHP 时间转换Unix时间戳代码
Jan 22 #PHP
PHP 实用代码收集
Jan 22 #PHP
在命令行下运行PHP脚本[带参数]的方法
Jan 22 #PHP
php获取url字符串截取路径的文件名和扩展名的函数
Jan 22 #PHP
PHP has encountered an Access Violation 错误的解决方法
Jan 17 #PHP
获取远程文件大小的php函数
Jan 11 #PHP
PHP 编程安全性小结
Jan 08 #PHP
You might like
基于mysql的论坛(5)
2006/10/09 PHP
探讨如何使用SimpleXML函数来加载和解析XML文档
2013/06/07 PHP
php操作xml入门之xml基本介绍及xml标签元素
2015/01/23 PHP
php简单实现查询数据库返回json数据
2015/04/16 PHP
兼容IE和FF的图片上传前预览js代码
2013/05/28 Javascript
js取模(求余数)隔行变色
2014/05/15 Javascript
js检测判断日期大于多少天的方法
2015/05/04 Javascript
JS实现具备延时功能的滑动门菜单效果
2015/09/17 Javascript
jQuery实现有动画淡出效果的二级折叠菜单代码
2015/10/17 Javascript
JQuery 动态生成Table表格实例代码
2016/12/02 Javascript
遍历json获得数据的几种方法小结
2017/01/21 Javascript
Angular中支持SCSS的方法
2017/11/18 Javascript
vue2.0模拟锚点的实例
2018/03/14 Javascript
Vue登录注册并保持登录状态的方法
2018/08/17 Javascript
JSONP原理及应用实例详解
2018/09/13 Javascript
17道题让你彻底理解JS中的类型转换
2019/08/08 Javascript
微信小程序wxs实现吸顶效果
2020/01/08 Javascript
[04:39]显微镜下的DOTA2第十三期—Pis卡尔个人秀
2014/04/04 DOTA
[01:00:25]2018DOTA2亚洲邀请赛3月30日 小组赛A组 VG VS Liquid
2018/03/31 DOTA
Python根据区号生成手机号码的方法
2015/07/08 Python
Python中生成Epoch的方法
2017/04/26 Python
如何分离django中的媒体、静态文件和网页
2019/11/12 Python
Python 面向对象之封装、继承、多态操作实例分析
2019/11/21 Python
对tensorflow中tf.nn.conv1d和layers.conv1d的区别详解
2020/02/11 Python
基于Python fminunc 的替代方法
2020/02/29 Python
python datetime处理时间小结
2020/04/16 Python
使用Pycharm(Python工具)新建项目及创建Python文件的教程
2020/04/26 Python
娱乐地球:Entertainment Earth
2020/01/08 全球购物
Currentbody德国站:健康与美容技术专家
2020/04/05 全球购物
建筑个人求职信范文
2014/01/25 职场文书
模特职业生涯规划范文
2014/02/26 职场文书
人力资源管理专业毕业生自荐书
2014/05/25 职场文书
兴趣班停课通知
2015/04/24 职场文书
CSS3实现的水平标题菜单
2021/04/14 HTML / CSS
Vue全局事件总线你了解吗
2022/02/24 Vue.js
TS 类型收窄教程示例详解
2022/09/23 Javascript