PHP文件操作[总结]

简介:

1、前言  

       工作中涉及到数据处理,后台需要用到PHP处理数据,之前没有接触过PHP,借此机会了解了一下PHP,PHP很方便,很灵活,编码很舒服,很喜欢用PHP处理后台数据。今天总结一下php文件操作,主要涉及到文件打开、读、写和关闭。

2、PHP文件操作API

文件创建/打开

  • fopen:(创建并)打开一个文件或 URL 地址。

文件写入

  • fwrite:向文件写入内容,可安全用于二进制文件 。
  • file_put_contents:向文件写入内容,等同依次调用 fopen,fwrite 以及 fclose 函数。

文件读取

  • fread:读取文件,可安全用于二进制文件。
  • fgets:从文件中读取 一行 数据,并将文件指针指向下一行。
  • fgetc:从文件中 逐字 读取文件数据,直到文件结束。
  • file_get_contents:把 整个文件 读入一个字符串。
  • file:把 整个文件 读入一个数组中,数组中的每个单元都是文件中相应的一行。

检查文件是否存在

检查文件是否可读写执行

文件拷贝

  • copy:拷贝文件。

文件删除

取得文件大小、类型、修改时间信息

文件指针函数

  • fclose:关闭文件指针。
  • feof:测试文件指针是否到了文件结束的位置。
  • fseek:在文件指针中定位。
  • rewind:倒回文件指针的位置。
  • ftell:返回文件指针读/写的位置

3、测试程序

复制代码
 1 <?php
 2 
 3 const FILE_NAME = "file_info.dat";
 4 
 5 class file_info
 6 {
 7     public $file_name;
 8     public $self_count;
 9     public $total_count;
10 }
11 
12 //判断文件是否存在
13 if (file_exists(FILE_NAME))
14 {
15   echo "file existed.\n";
16   unlink(FILE_NAME);
17 }
18 
19 $fd = NULL;
20 
21 $fd = fopen(FILE_NAME, "wb");
22 
23 if ($fd == NULL || $fd == false)
24 {
25   echo "Failed to open file.\n"; 
26   return;
27 }
28 
29 $obj = new file_info();
30 
31 if ($obj == NULL)
32 {
33    echo "Failed to create object.\n";
34    return;
35 }
36 
37 for($i=0; $i<3; $i++)
38 {
39    $temp_1 = $i * 10;
40    $temp_2 = $i * 100;
41    /*
42    $obj->file_name = "file_".$i."\n";
43    $obj->self_count = $temp_1."\n";
44    $obj->total_count = $temp_2."\n";
45    */
46    //构造字符串。filename-0-0\n
47    $row = "file_".$i."-".$temp_1."-".$temp_2."\n";
48    echo "row: ".$row;
49    fwrite($fd, $row);
50 }
51 
52 if ($fd)
53   fclose($fd); 
54 
55 $fd = fopen(FILE_NAME, "rb");
56 if ($fd == false)
57 {
58    echo "Failed to open read file.\n";
59    return;
60 }
61 
62 $obj_params =  array();
63 
64 $i = 0;
65 
66 while (!feof($fd))
67 {
68     $tmp_obj = new file_info();
69     $tmp_row = fgets($fd);
70     if ($tmp_row == NULL)
71     break;
72     $pos_1 = strpos($tmp_row, '-',0);
73     $pos_2 = strpos($tmp_row,'-',$pos_1 + 1);
74     $tmp_obj->file_name = substr($tmp_row, 0, $pos_1);
75     $tmp_obj->self_count = substr($tmp_row, $pos_1 + 1, $pos_2- $pos_1 - 1);
76     $tmp_obj->total_count = substr($tmp_row, $pos_2 + 1, strlen($tmp_row) - $pos_2 - 2);
77     $obj_params[$i] = $tmp_obj;
78     $i++;
79 }
80 
81 for ($k = 0; $k < count($obj_params); $k++)
82 {
83    echo $obj_params[$k]->file_name."\n";
84    echo $obj_params[$k]->self_count."\n";
85    echo $obj_params[$k]->total_count."\n";
86 }
87 
88 if ($fd)
89    fclose($fd);
复制代码

程序执行结果如下所示:

相关文章
|
Shell 开发工具 开发者
mac出现无法打开“*“,因为无法验证开发者 问题解决
mac出现无法打开“*“,因为无法验证开发者 问题解决
6301 0
mac出现无法打开“*“,因为无法验证开发者 问题解决
|
安全 搜索推荐 定位技术
一张图30个知识点,全方位认知 Elasticsearch 技术发展
一张图30个知识点,全方位认知 Elasticsearch 技术发展
|
存储 JSON Java
elasticsearch学习一:了解 ES,版本之间的对应。安装elasticsearch,kibana,head插件、elasticsearch-ik分词器。
这篇文章是关于Elasticsearch的学习指南,包括了解Elasticsearch、版本对应、安装运行Elasticsearch和Kibana、安装head插件和elasticsearch-ik分词器的步骤。
1207 0
elasticsearch学习一:了解 ES,版本之间的对应。安装elasticsearch,kibana,head插件、elasticsearch-ik分词器。
|
JavaScript PHP UED
【PHP开发专栏】PHP与WebSocket实时通信
【4月更文挑战第30天】本文介绍了PHP实现WebSocket实时通信的原理、使用方法和实际案例。WebSocket是基于HTTP的全双工通信协议,PHP 5.4以上版本支持WebSocket,可通过内置函数或第三方库如Socket.io、PHP-WebSocket来实现。文章详细展示了创建WebSocket服务器和客户端的PHP代码示例,并提及在PHP中使用Socket.io库进行实时通信。
732 2
|
SQL 监控 关系型数据库
MySQL慢查询日志配置指南:发现性能瓶颈,提升数据库效率
MySQL慢查询日志配置指南:发现性能瓶颈,提升数据库效率
1592 0
|
Ubuntu
Ubuntu中解压出现:bzip2: (stdin) is not a bzip2 file.
Ubuntu中解压出现:bzip2: (stdin) is not a bzip2 file.
1133 0
【已解决】mac电脑终于卸载掉了这个“微信键盘”输入法
【已解决】mac电脑终于卸载掉了这个“微信键盘”输入法
|
存储 缓存 自然语言处理
ES 8.0:历时三年的 Elasticsearch 8.x 大更新给我们带来了什么?
ES 8.0:历时三年的 Elasticsearch 8.x 大更新给我们带来了什么?
ES 8.0:历时三年的 Elasticsearch 8.x 大更新给我们带来了什么?
|
PHP Linux 安全
php中读取大文件实现方法详解
php中读取大文件实现方法详解 来源:   时间:2013-09-05 19:27:01   阅读数:6186 分享到:0 [导读] 本文章来给各位同学介绍php中读取大文件实现方法详解吧,有需要了解的同学可进入参考参考。
990 0
|
MySQL 关系型数据库 测试技术
11步教你选择最稳定的MySQL版本
MySQL开源数据库有多个重要分支,目前拥有的分支分别为:MySQL Cluster、MySQL 5.1、MySQL 5.5、MySQL 6.2。每个分支都有着同样的的MySQL数据库版本,分别为:Development版本、Alpha版本、Beta版本、RC版本和GA版本。
2447 0