php中文件的处理

一、 将数据写入文件有以下3步骤:
  1. 打开这个文件。如果文件不存在,需要先创建它。
  2. 将数据写入这个文件。
  3. 关闭这个文件。
同样,从一个文件中读出数据也有3个步骤
1.打开这个文件。如果这个文件不能打开,就应该意识到这一点且正确地退出。
2.从文件中读出数据。
3.关闭这个文件。

二、 打开文件
fopen(filename,mode,[include_path,context]);
例: $fp= fopen('order.txt' , 'ab' , true); //将返回一个指向这个文件的文件指针
filename为文件路径及文件名,规定要打开的文件或URL
mode为打开文件的模式。
include_path如果需要在include_path中检索文件的话,可将该参数设为1或true。可选
(需要在PHP的配置中设置,若为true,就不需要提供目录名或路径)
context规定文件句柄环境。(允许文件名称以协议名称开始如http://和ftp://
在php.ini中可通过allow_url_fopen来禁用这个功能。
http:/ / 必须在目录名称后添加结束斜线,如:http://www.baidu.com/)
例:$fp=fopen("$DOCUMENT_ROOT/../orders/orders.txt",'w'); //这是一个相对路径
".."表示文档根目录的父目录。
$DOCUMENT_ROOT 指向web服务器文档树的根。
还可以用$_SERVER['DOCUMENT_ROOT']和$HTTP_SERVER_VARS['DOCUMENT_ROOT']
来得到文档根目录。

若fopen()函数调用失败,将返回false。所以可根据自己的方式给出错误处理。
if(!$fp){................}
三、fopne()函数的 文件模式的总结
r 只读 w只写(若文件存在将删除所有的文件已有内容,如不存在将创建这个文件)
x 谨慎写(若文件存在将不会被打开,fopen()返回false,并产生一个警告)
a 追加(若文件存在将在文件末尾开始追加,不存在将创建文件)
b 二进制(用于与其他模式进行连接。如ab,wb) t 文本

四、 写文件
原型:int fwrite(resource handle , string string [, int length]) //length是写入的最大的字符数
//返回写入的字符数,若失败返回false
fwrite($fp , $outputstring); 或fputs($fp , $outputstring) //$outputstring保存要写入的字符串
1、fwrite()的一个替换函数是file_put_contents(),函数原型如下:
int file_put_contents(string filename, string data [, int flags , resource context]);
五、 关闭文件
fclose(resource handle) //成功返回true 失败返回false
六、 读取文件
1、 知道何时读完文件
feof(resource handle)
例:while(!feof($fp))
函数feof()的唯一参数是文件指针。该文件指针指向了文件末尾将返回true。

2、 每次读取一行数据 fgets() fgetss() fgetcsv()
例: fgets($fp,999);
这个函数可以从文件中每次读取一行内容,不断地读入数据,直到读到一个换行字符\n或文件结束符EOF或是从文件中读取了998B。
例:fgetss(resource fp , int length , string [allowable_tags])
与fgets()相似,但它可以过滤字符串上包含的PHP和HTML标记。可以将它们包含在allowable_tags字符串中。
例:fgetcsv(resource fp , int length [, string delimiter [, string enclosure]])
当在文件中使用了定界符时,如:制表符或逗号,可以使用这个函数将文件分成多行
array fgetcsv($fp, 100 , "\t");
以上代码将从文件中读取一行,并且在有制表符\t的地方将文件内容分行。返回一个数组。
enclosure参数用来指定每行中封闭每一个域的字符,如果没有指定任何字符,在默认情况下,这个字符就是双引号。

3、 读取整个文件
1、int readfile(string filename , [int use_include_path, resource context]) ;
使用这个函数将打开这个文件并将文件内容输出,返回字节总数,不需要先打开文件。
2、int fpassthru(resource fp);
该函数将给定的文件指针从当前的位置读取到 EOF,并把结果写到输出。返回字节总数。
3、file(string filename, [int use_include_path, resource context] );
与readfile()一样,不同的是返回数组。
4、读取一个字符
fgetc(resource fp)
这个函数从文件中一次读取一个字符。
5 、读取任意长度
string fread(resource $fp , int length);

七、 使用其他有用的文件函数
1、查看文件是否存在
file_exists(filename);
2、确定文件大小
filesize(filename); 它以字节为单位返回一个文件的大小。
3、删除一个文件
unlink(filename); 删除文件,若无法删除返回false。
4、在文件中定位:rewind() 、 fseek() 、 ftell()
rewind(resource fp) 将文件指针复位到文件的开始。
ftell(resource fp) 以字节为单位报告文件指针当前在文件中的位置。
int fseek(resource fp , int offset [, int whence]) 可以将文件指针fp从whence位置移动offset个字节。whence默认值为SEEK_SET表示文件的开始处。可能值为SEEK_CUR当前位置和SEEK_END文件的结束
5、文件锁定
bool flock(resource fp , int operation [, int & wouldblock])
operation值为 LOCK_SH:读操作锁定。意味着文件可以共享,其他人可以读取该文件
LOCK_EX:写操作锁定。该文件不能被共享
LOCK_UN 释放已有的锁定
LOCK_NB 防止在请求加锁时发生阻塞



  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值