您的位置:首页 > 编程语言 > PHP开发

PHP对文件的操作总结

2012-05-31 23:43 225 查看

1、使用fopen打开文件

$fp = fopen("a.txt", 'w'); //用写方法打开一个文件a.txt

fopen具有2个、3个或4个参数,通常是2个参数,第二个参数是打开文件的模式,以下是fopen打开文件的全部模式:

模式模式名称解释
r只读打开文件,从头开始读
r+只读打开文件,从头开始读写
w只写从头开始读。若文件存在,则删除文件内容;若文件不存在,则创建文件
w+只写从头开始读写,若文件存在,则删除所有,否则创建文件
x谨慎写写模式打开,若文件存在,文件不会被打开,fopen返回false
x+谨慎写读写模式打开,若文件存在,文件不会被打开fopen返回false
a追加打开文件,若有内容,则在末尾添加内容,文件不存在创建文件
a+追加打开文件,若有内容,从末尾开始读写,文件不存在则创建文件
b二进制推荐模式,用于和其他模式连接
t文本用于和其他模式结合,不推荐,除非已经用了b选项
fopen的第三个选项是可选的,代表是否在include_path中搜索一个文件,如果要,就设置成1

fopen的第四个参数也可选,用来打开远程文件,比如http://www.51projob.com

fopen返回的只是一个文件指针,要进行操作,还要用其他函数

2、fopen打开远程文件

首先,需要将php.ini中的allow_url_open开启

3、fwite用于向文件写入内容

fwite($fp, $outputstring);

另一个替换函数,是file_put_contents(),原型是:

int file_put_contents( string filename, string data, [, int flag] [, resource context])

另一个可以替代fopen的函数是file_get_contents,可以讲一个文本文件所有内容放入一个单个字符串中

4、fwite()的参数

fwite具有三个参数

int fwite( resource handle, string string [, int length])

第三个参数是写入的最大字符数目,比如,额可以这样写:

fwite($fp, $outputstring, strlen($outputstring));

5、fclose($fp)用于关闭文件

如果关闭成功,该函数则返回true值,但一般不用测试

6、判断何时读完文件:feof()

如果是按行、按字符读取文件,需要判断是否读完了,可以这样判断

while (!feof($fp)) {}

7、每次读取一行数据fgets(), fgetss(), fgetcsv()

$order = fgets($fp, 999); //一直读取数据,知道遇到了换行,或者EOF,或者999B string fgetss(resource fp, int length, string [allowable_tags]); //和fgets一样,不过这个可以过滤PHP和HTML标记,并且还能指定要过滤的特殊标记,放在allowable_tags变量中就可以 array fgetcsv( resource fp, int length [, string delimiter [, string enclosure]]); //当文件中使用了定界符的时候,可以用这种方法读取,比如 $order = fgetcsv($fp, 10, "\t");//注意,返回的是数组

8、读取整个文件readfile()、fpassthru()和file()

int readfile(string filename, [int use_include_path [, resource context]]);第三个参数只有文件远程打开才会用,返回值是文件的字节数目 $fp = fopen("a.txt", 'rb'); fpassthru($fp); //如果成功,返回true,否则返回false $arr = file("a.txt")将文件按行读取存放在$arr数组中
array file( string
$filename
[, int
$flags
= 0 [, resource
$context
]] )


file()将整个文件载入到一个数组中,每行成为数组的一个元素

9、使用fgetc($fp)每次读取一个字符

10、读取任意长度string fread(resource fp, int length);

11、查看文件是否存在file_exists()

12、确定文件大小filesize("a.txt");

13、删除一个文件unlink("a.txt");

14、在文件中定位:rewind()、fseek()和ftell()

rewind()将指针复位到文件的开始 int fseek( resource fp, int offset [, int whence]);//将文件指针从whence位置移动offset个字节,也可以用SEEK_CUR和SEEK_END作为whence

15、文件锁定

这是为了实现对文件的互斥访问而设置的函数

bool flock (resource fp, int operation [, int &wouldblock ] );

第二个参数指定文件被锁的类型:

LOCK_SH:读操作锁定,文件可以共享,别人可以读 LOCK_EX:写操作锁定,互斥的,文件不能被共享 LOCK_UN:释放已有的锁定 LOCK_NB:防止在请求加锁时阻塞
注意:flock不能用于NTF或者FAT文件系统
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: