1.传统的方法 fopen, fclose

feof:file、end of file

例子:

$file_handle = fopen("c:\\myfile.txt", "r");//使用fopen打开与文件的连接
while (!feof($file_handle)) { //使用feof判断是否到达文件末尾
$line = fgets($file_handle); //使用fgets按行读取文件内容
echo $line;
}
fclose($file_handle); //最后使用fclose关闭与文件的连接

  过程: 1. fopen -> feof -> fgets -> fclose

打开             读取             关闭

注意:如果是从二进制文件读取以获得跨平台兼容性,则应当将 r 更改为 rb

2. 以fgetss取代fgets

fgetss() 函数从打开的文件中读取一行并过滤掉 HTML 和 PHP 标记。

与 fgets() 相同,不同的是 fgetss 尝试从读取的文本中去掉任何 HTML 和 PHP 标记。

例子:

<?php
$file = fopen("test.htm","r");
echo fgetss($file);
fclose($file); ?>

  当然也可以通过传递第三个参数来指定哪些标记是允许输出的:

<?php

$file = fopen("test.htm","r");
echo fgetss($file,1024,"<p>,<b>");//<p>和<b>标记将不会被过滤
fclose($file); ?>  

详细信息参考:http://www.w3school.com.cn/php/func_filesystem_fgetss.asp

3. 以二进制读取 fread取代fgets

同样需要打开文件连接 fopen

$fh = fopen("c:\\myfile.txt", "rb");//rb是兼容二进制读取
$data = fread($fh, filesize("c:\\myfile.txt"));
fclose($fh);

  特别注意:fread()虽然可以通过第二个参数来指定读取文件的长度,但最长只能读取8192个字节(8kb),

如果文件长度超过8k则需要循环读取

4.将整个文件读入到一个字符串的方法 file_get_contents()

详细可见:PHP的file_get_contents()方法,将整个文件读入字符串中

5.将整个文件读入到一个数组中返回 file()

<?php
print_r(file("c:\\abc.txt"));//结果将abc.txt文件的每一行当成数组的每个元素返回
?>

  

6. 非线性文件处理 fseek

以上函数只允许顺序读取文件,当需要来回跳转到文件的不同部分。这时就得用 fseek 。
         5.1. fseek($fh, 0); //跳转回文件的开头

5.2. fseek($fh, 1024);//返回前1024字节前面

从 PHP V4.0 新增功能:
         5.3. fseek($fh, 100, SEEK_CUR);//从当前位置向前跳转 100 个字节

5.4. fseek($fh, -100, SEEK_CUR);//向后跳转 100 个字节

5.5. fseek($fh, -100, SEEK_END);//向后跳转至文件末尾前 100 个字节处

参考:http://www.ibm.com/developerworks/cn/opensource/os-php-readfiles/

最新文章

  1. one_person年轻的程序员
  2. python -socket -client
  3. 给VMware下的Linux扩展磁盘空间(以CentOS6.5为例)
  4. python基础知识4——collection类——计数器,有序字典,默认字典,可命名元组,双向队列
  5. json转换成对象
  6. ios 百度地图
  7. PS 颜色表大全-CMYK颜色表(2)
  8. 1101-Trees on the Level
  9. Unity3D中读取CSV文件
  10. 怎样改动、扩展并重写Magento代码
  11. Spring搭建MVC WEB项目[转]
  12. java中system.out.println()是什么意思
  13. MyEclipse的Expressions没有结果的解决办法
  14. Node入门教程(5)第四章:global 全局变量
  15. High Availability手册(3): 配置
  16. python基础一 ------&quot;有序&quot;的字典
  17. Mybatis Generator配置详解
  18. centos下httpd-2.4的编译安装
  19. JsonKey小写
  20. 怎么搜索sci论文。

热门文章

  1. Android-自定义IntentSession来传递数据
  2. C# WPF Application 下的文件操作
  3. C++裁剪文件,截断文件,_chsize()
  4. [Erlang04]为什么有了rpc还有net_kernel:connect/1?
  5. ManualResetEvent 线程通信
  6. kvm虚拟机扩展磁盘空间
  7. 洛谷P3783 [SDOI2017]天才黑客(前后缀优化建图+虚树+最短路)
  8. tcp 建立连接的三次握手,以及关闭连接的4次挥手
  9. Nginx+Apache动静分离
  10. json与xml简介