1、使用fopen打开文件
$fp = fopen(“a.txt”, ‘w’);
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);
- string fgetss(resource fp, int length, string [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);
- $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文件系统