操作文件是在PHP程序经常要做的事,在这简单的介绍一些操作文件的方法,包括文件的储存,读出,插入新记录,删除其中一条记录等:
操作文件经常要用到的函数
fopen()//打开一个文件
fclose()//关闭一个文件
copy()//复制一个文件
feof()//判断文件指针是否到了最后
file_exists()//判断文件是否存在
file()//把整个文件读入一个数组 * 很有用
flock()//琐定文件
fread()//读取整个文件
fwrite()//写入文件,也可用来新建文件
unlink()//删除文件
其中我个人觉得fwrite和file是最有用的
fopen()有很多参数需要注意,可以查手册找到
mode 说明
'r' 只读方式打开,将文件指针指向文件头。
'r+' 读写方式打开,将文件指针指向文件头。
'w' 写入方式打开,将文件指针指向文件头并将文件大小截为零。如果文件不存在则尝试创建之。
'w+' 读写方式打开,将文件指针指向文件头并将文件大小截为零。如果文件不存在则尝试创建之。
'a' 写入方式打开,将文件指针指向文件末尾。如果文件不存在则尝试创建之。
'a+' 读写方式打开,将文件指针指向文件末尾。如果文件不存在则尝试创建之。
'x' 创建并以写入方式打开,将文件指针指向文件头。如果文件已存在,则 fopen() 调用失败并返回 FALSE,并生成 一条 E_WARNING 级别的错误信息。如果文件不存在则尝试创建之。这和给 底层的 open(2) 系统调用指定 O_EXCL|O_CREAT 标记是等价的。此选项被 PHP 4.3.2 以及以后的版本所支持,仅能用于本地文件。
'x+' 创建并以读写方式打开,将文件指针指向文件头。如果文件已存在,则 fopen() 调用失败并返回 FALSE,并生成一条 E_WARNING 级别的错误信息。如果文件不存在则尝试创建之。这和给 底层的 open(2) 系统调用指定 O_EXCL|O_CREAT 标记是等价的。此选项被 PHP 4.3.2 以及以后的版本所支持,仅能用于本地文件。
fwrite()是写入文件,在这给个比较好用的函数,是fwrite的增强版,呵呵
function writetofile($file_name,$data,$method="w") {
$filenum=fopen($file_name,$method);
flock($filenum,LOCK_EX);
$file_data=fwrite($filenum,$data);
fclose($filenum);
return $file_data;
}
用法很容易吧,应该能看懂,和fwrite一样的用法,但其中包含了fopen,flock,fclose,很实用
file()是把整个文件读入一个数组
比如把一个文件当成数据库来使用,一般都要用到这个函数
它能一行一行的读取文本,这样我们就可以把每条记录存成一行,然后读取,后面给出的例子可以看见它的使用方法
操作文件当然少不了对字符串的操作
其中一般会用到
explode()和implode()两个函数
第一个是用来根据关键字分割字符串的,第二个刚好相反,是用关键字把字符串连成一个整体的
下面是手册上的两个小例子
实例:(一个简单的文件读写)
补充::
一些比较基本的文件储存方法:
1..如果想用文本象数据库一样储存数据..为了以后的方便...一般是把每条数据储存为一行..以后用file函数把他分开..然后每行应该都有分割符...比如 | ..用来分割各个字段..把用file函数分开后的数据再用explode根据分割符进行分割...使他可以应用到程序中...就好象直接从数据库中取出某条记录的某字段一样...
2..看BO-BLOG学到的一点经验.....因为文件大了以后很难操作嘛..所以要尽量减上文件的大小...比如做新闻管理或BLOG的时候...每篇文章都应该单独生成一个文件储存....但如果是注册用户的信息呢??因为注册用户可能很多..我们不可能分开储存..那得多少个文件啊....这样我们可以先取得注册用户名的首字母..比如phzzy就是p...汉字用户名就是han_..这样分组储存在不同的文件中..在用户登陆判断密码时也不用一次打开一个庞大的文件..而是可以先取得首字母分析要打开那个文件然后在取得用户信息
3..要操作文件中的某一行..比如修改或删除什么的..一般是用file分割整个文件...听说也有人用指针做的..不过好象特别麻烦..那样好象必须确定文本中每行甚至每个"字段"(就是用|分割开来的东西)的字符数...比较麻烦...建议还是一次打开整个文件吧....打开整个文件并file后..生成一个数组..然后用循环找到要修改或删除的那一行并进行相关操作...然后在用implode合并数组并储存进文件中
4..木有了...想到再写
http://www.flashforweb.com 作者:Phzzy
操作文件经常要用到的函数
fopen()//打开一个文件
fclose()//关闭一个文件
copy()//复制一个文件
feof()//判断文件指针是否到了最后
file_exists()//判断文件是否存在
file()//把整个文件读入一个数组 * 很有用
flock()//琐定文件
fread()//读取整个文件
fwrite()//写入文件,也可用来新建文件
unlink()//删除文件
其中我个人觉得fwrite和file是最有用的
fopen()有很多参数需要注意,可以查手册找到
mode 说明
'r' 只读方式打开,将文件指针指向文件头。
'r+' 读写方式打开,将文件指针指向文件头。
'w' 写入方式打开,将文件指针指向文件头并将文件大小截为零。如果文件不存在则尝试创建之。
'w+' 读写方式打开,将文件指针指向文件头并将文件大小截为零。如果文件不存在则尝试创建之。
'a' 写入方式打开,将文件指针指向文件末尾。如果文件不存在则尝试创建之。
'a+' 读写方式打开,将文件指针指向文件末尾。如果文件不存在则尝试创建之。
'x' 创建并以写入方式打开,将文件指针指向文件头。如果文件已存在,则 fopen() 调用失败并返回 FALSE,并生成 一条 E_WARNING 级别的错误信息。如果文件不存在则尝试创建之。这和给 底层的 open(2) 系统调用指定 O_EXCL|O_CREAT 标记是等价的。此选项被 PHP 4.3.2 以及以后的版本所支持,仅能用于本地文件。
'x+' 创建并以读写方式打开,将文件指针指向文件头。如果文件已存在,则 fopen() 调用失败并返回 FALSE,并生成一条 E_WARNING 级别的错误信息。如果文件不存在则尝试创建之。这和给 底层的 open(2) 系统调用指定 O_EXCL|O_CREAT 标记是等价的。此选项被 PHP 4.3.2 以及以后的版本所支持,仅能用于本地文件。
fwrite()是写入文件,在这给个比较好用的函数,是fwrite的增强版,呵呵
function writetofile($file_name,$data,$method="w") {
$filenum=fopen($file_name,$method);
flock($filenum,LOCK_EX);
$file_data=fwrite($filenum,$data);
fclose($filenum);
return $file_data;
}
用法很容易吧,应该能看懂,和fwrite一样的用法,但其中包含了fopen,flock,fclose,很实用
file()是把整个文件读入一个数组
比如把一个文件当成数据库来使用,一般都要用到这个函数
它能一行一行的读取文本,这样我们就可以把每条记录存成一行,然后读取,后面给出的例子可以看见它的使用方法
操作文件当然少不了对字符串的操作
其中一般会用到
explode()和implode()两个函数
第一个是用来根据关键字分割字符串的,第二个刚好相反,是用关键字把字符串连成一个整体的
下面是手册上的两个小例子
实例:(一个简单的文件读写)
补充::
一些比较基本的文件储存方法:
1..如果想用文本象数据库一样储存数据..为了以后的方便...一般是把每条数据储存为一行..以后用file函数把他分开..然后每行应该都有分割符...比如 | ..用来分割各个字段..把用file函数分开后的数据再用explode根据分割符进行分割...使他可以应用到程序中...就好象直接从数据库中取出某条记录的某字段一样...
2..看BO-BLOG学到的一点经验.....因为文件大了以后很难操作嘛..所以要尽量减上文件的大小...比如做新闻管理或BLOG的时候...每篇文章都应该单独生成一个文件储存....但如果是注册用户的信息呢??因为注册用户可能很多..我们不可能分开储存..那得多少个文件啊....这样我们可以先取得注册用户名的首字母..比如phzzy就是p...汉字用户名就是han_..这样分组储存在不同的文件中..在用户登陆判断密码时也不用一次打开一个庞大的文件..而是可以先取得首字母分析要打开那个文件然后在取得用户信息
3..要操作文件中的某一行..比如修改或删除什么的..一般是用file分割整个文件...听说也有人用指针做的..不过好象特别麻烦..那样好象必须确定文本中每行甚至每个"字段"(就是用|分割开来的东西)的字符数...比较麻烦...建议还是一次打开整个文件吧....打开整个文件并file后..生成一个数组..然后用循环找到要修改或删除的那一行并进行相关操作...然后在用implode合并数组并储存进文件中
4..木有了...想到再写
http://www.flashforweb.com 作者:Phzzy