php常用文件函数

2021-06-22  本文已影响0人  PENG先森_晓宇

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。

上一篇 下一篇

猜你喜欢

热点阅读