fopen
fopen(fileName,mode)
将 filename 指定的名字资源绑定到一个流上,其实就是打开一个文件描述符,mode有下面几种模式:
mode | 说明 |
---|---|
r | 以只读的方式打开,并将文件指针指向文件头部 |
r+ | 以读写方式打开,并将文件指针指向文件头部 |
w | 以写方式打开,并将文件大小设置为0,也就是会删除文件原内容。如果文件不存在则尝试创建 |
w+ | 以读写方式打开,并将文件大小设置为0,也就是删除文件原内容。如果文件不存在则尝试创建 |
a | 以写入方式打开,并将文件指针指向文件尾部。文件不存在则创建之 |
a+ | 以读写方式打开,并将文件指针指向文件尾部。文件不存在则创建之 |
$file=fopen("./gis.txt",'r');
fread
读取文件,以字节数读取文件内容;file为必需,规定要读取打开文件;length必需,规定要读取的最大字节数。
fread(file,length)
fread是按照字节数
读取数据的。
fgets
按行
读取文件的内容,而fread是按照字节流
读取数据的。
fgets(file)
feof
判断是否已到达文件末尾 。如果到达文件末尾返回true
,如果没有到达的话返回false
;
feof(file)
读取一个文件内容时,通常fgets和feof一起配合使用
或者是fread和feof一起使用
。
$file=fopen('./a/txt','r+')
while(!feof($file){
$cxt=fgets($file);//或者是$cxt=fread($file,100)
//执行一些操作
// todo
}
fclose($file)
fwrite
在文件描述符中写入字符。file为必写,是fopen打开的文件描述符,string为必选,为写入的字符串,length为可选,表示写入的最大字节数。
fwrite(file,string,length)
注意:使用该函数,在fopen的时候必须要有写入权限,比如r+
,w+
,a+
,r+时文件的指针指向头部,w+时会清空源文件并文件指针指向头部,a+时才会是我们的理解追加问价内容,在文件尾部写入内容。
flock
在多进程中,写文件时会有一个乱序的问题,想要保证写入顺序正确,所有需要对文件加锁,这个是个很关键的函数flock
flock(file,operation)
operation表示锁的类型,锁类型一共有以下几种
类型 | 说明 |
---|---|
LOCK_SH | 获得共享锁,类似于MYSQL中的共享锁,可读不写写 |
LOCK_EX | 获得独占锁,类似于MYSQL中的排他锁,不可读也不可写 |
LOCK_NB | LOCK_SH和LOCK_EX锁都会阻塞,加LOCK_NB之后会解除阻塞,类似于REDIS中的互斥锁 |
LOCK_UN | 用于解锁 |
$file=fopen("./a.txt",a+)
$flag=flock($file,'LOCK_EX|LOCK_NB');
while (!$flag){
usleep(10000);//10毫秒
$flag=flock($file,'LOCK_EX|LOCK_NB');
}
$cxt=11;
fwrite($file,$cxt);
flock($file,"LOCK_UN")
fclose($file);
file_get_contents
将整个文件的内容读入一个字符串
file_put_contents
将一个字符串写入文件,和依次调用fopen,fwrite,fclose相同。
file_put_contents(
string `$filename`,
mixed `$data`,
int `$flags` = 0,
resource `$context` = ?
): int
主要介绍下$flags,改变量是可选的,可选参数为FILE_APPEND
表示追加内容,LOCK_EX
表示在写入时加入一个独占锁,和上面介绍的flock中的LOCK_EX
一样;
file_put_contents($file,"aaa","FILE_APPEND|LOCK_EX")
is_readable
判断文件是否可读,返回bool类型
is_readable('./a.txt')
is_writeable
判断文件是否可写,返回bool类型
is_writeable('./a.txt')
file_exists
判断文件是否存在
file_exists('./a.txt')
basename()
返回路径的文件名部分
basename('/home/gis.txt')
返回
gis.txt
dirname()
返回路径的目录部分
dirname('/home/gis.txt')
返回
/home
filesize
若成功,则返回文件大小的字节数
。若失败,则返回 false 并生成一条 E_WARNING 级的错误。
unlink
删除文件,若成功,则返回 true,失败则返回 false。
网友评论