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、测试程序

 <?php

 const FILE_NAME = "file_info.dat";

 class file_info
{
public $file_name;
public $self_count;
public $total_count;
} //判断文件是否存在
if (file_exists(FILE_NAME))
{
echo "file existed.\n";
unlink(FILE_NAME);
} $fd = NULL; $fd = fopen(FILE_NAME, "wb"); if ($fd == NULL || $fd == false)
{
echo "Failed to open file.\n";
return;
} $obj = new file_info(); if ($obj == NULL)
{
echo "Failed to create object.\n";
return;
} for($i=0; $i<3; $i++)
{
$temp_1 = $i * 10;
$temp_2 = $i * 100;
/*
$obj->file_name = "file_".$i."\n";
$obj->self_count = $temp_1."\n";
$obj->total_count = $temp_2."\n";
*/
//构造字符串。filename-0-0\n
$row = "file_".$i."-".$temp_1."-".$temp_2."\n";
echo "row: ".$row;
fwrite($fd, $row);
} if ($fd)
fclose($fd); $fd = fopen(FILE_NAME, "rb");
if ($fd == false)
{
echo "Failed to open read file.\n";
return;
} $obj_params = array(); $i = 0; while (!feof($fd))
{
$tmp_obj = new file_info();
$tmp_row = fgets($fd);
if ($tmp_row == NULL)
break;
$pos_1 = strpos($tmp_row, '-',0);
$pos_2 = strpos($tmp_row,'-',$pos_1 + 1);
$tmp_obj->file_name = substr($tmp_row, 0, $pos_1);
$tmp_obj->self_count = substr($tmp_row, $pos_1 + 1, $pos_2- $pos_1 - 1);
$tmp_obj->total_count = substr($tmp_row, $pos_2 + 1, strlen($tmp_row) - $pos_2 - 2);
$obj_params[$i] = $tmp_obj;
$i++;
} for ($k = 0; $k < count($obj_params); $k++)
{
echo $obj_params[$k]->file_name."\n";
echo $obj_params[$k]->self_count."\n";
echo $obj_params[$k]->total_count."\n";
} if ($fd)
fclose($fd);

程序执行结果如下所示:

参考网址:

http://www.w3school.com.cn/php/php_file.asp

http://www.cnblogs.com/xbf321/archive/2011/09/01/file-in-php.html

PHP文件操作[总结]的更多相关文章

  1. 【.NET深呼吸】Zip文件操作(1):创建和读取zip文档

    .net的IO操作支持对zip文件的创建.读写和更新.使用起来也比较简单,.net的一向作风,东西都准备好了,至于如何使用,请看着办. 要对zip文件进行操作,主要用到以下三个类: 1.ZipFile ...

  2. 野路子出身PowerShell 文件操作实用功能

    本文出处:http://www.cnblogs.com/wy123/p/6129498.html 因工作需要,处理一批文件,本想写C#来处理的,后来想想这个是PowerShell的天职,索性就网上各种 ...

  3. Node基础篇(文件操作)

    文件操作 相关模块 Node内核提供了很多与文件操作相关的模块,每个模块都提供了一些最基本的操作API,在NPM中也有社区提供的功能包 fs: 基础的文件操作 API path: 提供和路径相关的操作 ...

  4. 归档NSKeyedArchiver解归档NSKeyedUnarchiver与文件管理类NSFileManager (文件操作)

    ========================== 文件操作 ========================== 一.归档NSKeyedArchiver 1.第一种方式:存储一种数据. // 归档 ...

  5. SQL Server附加数据库报错:无法打开物理文件,操作系统错误5

    问题描述:      附加数据时,提示无法打开物理文件,操作系统错误5.如下图: 问题原因:可能是文件访问权限方面的问题. 解决方案:找到数据库的mdf和ldf文件,赋予权限即可.如下图: 找到mdf ...

  6. 通过cmd完成FTP上传文件操作

    一直使用 FileZilla 这个工具进行相关的 FTP 操作,而在某一次版本升级之后,发现不太好用了,连接老是掉,再后来完全连接不上去. 改用了一段时间的 Web 版的 FTP 工具,后来那个页面也 ...

  7. Linux文件操作的主要接口API及相关细节

    操作系统API: 1.API是一些函数,这些函数是由linux系统提供支持的,由应用层程序来使用,应用层程序通过调用API来调用操作系统中的各种功能,来干活 文件操作的一般步骤: 1.在linux系统 ...

  8. C语言的fopen函数(文件操作/读写)

    头文件:#include <stdio.h> fopen()是一个常用的函数,用来以指定的方式打开文件,其原型为:    FILE * fopen(const char * path, c ...

  9. Python的文件操作

    文件操作,顾名思义,就是对磁盘上已经存在的文件进行各种操作,文本文件就是读和写. 1. 文件的操作流程 (1)打开文件,得到文件句柄并赋值给一个变量 (2)通过句柄对文件进行操作 (3)关闭文件 现有 ...

  10. python 文件操作(转)

    python中对文件.文件夹(文件操作函数)的操作需要涉及到os模块和shutil模块. 得到当前工作目录,即当前Python脚本工作的目录路径: os.getcwd() 返回指定目录下的所有文件和目 ...

随机推荐

  1. hdu 5734 Acperience 水题

    Acperience 题目连接: http://acm.hdu.edu.cn/showproblem.php?pid=5734 Description Deep neural networks (DN ...

  2. Cannot create a new pixel buffer adaptor with an asset writer input that has already started writing'

    reason: '*** -[AVAssetWriterInputPixelBufferAdaptor initWithAssetWriterInput:sourcePixelBufferAttrib ...

  3. ZOJ 2702 Unrhymable Rhymes 贪心

    贪心.能凑成一组就算一组 Unrhymable Rhymes Time Limit: 10 Seconds      Memory Limit: 32768 KB      Special Judge ...

  4. go中的接口

    对于golang的接口,纠结两天了,今天有种茅塞顿开的感觉,有必要写点东西了. 纠结接口,说白了就是搞不透接口,方法,结构体几者之间的关系以及具体的用途.可以简单的从三者的定义说起,接口说白了就是一个 ...

  5. 改进架构,实现动态数据源,减少java维护

    怎样不用写java代码来完毕开发? 对于大部分的产品和项目来说.页面变化是很头痛的事情.每次小功能上线,新客户到来,都须要进行定制改造,不断的开发维护.每次开发一方面要修改页面,一方面要修改serve ...

  6. Promise,Generator(生成器),async(异步)函数

    Promise 是什么 Promise是异步编程的一种解决方案.Promise对象表示了异步操作的最终状态(完成或失败)和返回的结果. 其实我们在jQuery的ajax中已经见识了部分Promise的 ...

  7. 面试笔试-脚本-1:使用shell脚本输出登录次数最多的用户

    原题目: 一个文本类型的文件,里面每行存放一个登陆者的IP(某些行是反复的),写一个shell脚本输出登陆次数最多的用户. 之前刚看到这个题目时,立即没有想到一行直接解决的办法,尽管知道能够先进行排序 ...

  8. CSS background-position用法

    相信很多喜欢研究网页界面的童鞋都遇到过一个奇妙的现象:网页中很多图片素材被合成在一张图片上. 起初小菜模仿网站的时候,经常遇到这个现象,那时候也不知道这时什么技术,人家的整张图片素材不会利用,只能用p ...

  9. Windows Phone本地数据库(SQLCE):13、更新数据(翻译)

    这是“windows phone mango本地数据库(sqlce)”系列短片文章的第十三篇. 为了让你开始在Windows Phone Mango中使用数据库,这一系列短片文章将覆盖所有你需要知道的 ...

  10. 实现iOS长时间后台的两种方法:Audiosession和VOIP

    http://www.cocoachina.com/applenews/devnews/2012/1212/5313.html 我们知道iOS开启后台任务后可以获得最多600秒的执行时间,而一些需要在 ...