在我们的印象当中,如果需要将数据永久的保存起来,主要有两种法子,一个是直接保存到普通文件当中,另一个法子就是保存到我们的数据库当中。
利用PHP,我们可以在服务器上生成目录,进行一些文件创建、编辑、删除
修改文件属性等操作。
如何判断给定的文件名是普通文件还是目录?
-
is_file()函数 判断给定文件名是否为一个正常的文件,返回一个布尔值true和false。
-
is_dir()函数 判断给定文件名是否是一个目录。
文件的属性
-
file_exists()函数 检查文件或者目录是否存在。
-
filesize()函数 获取普通文件的大小(不能放文件夹),单位是字节。
-
is_readable()函数 判断给定文件名是否用于可读权限。
-
is_writable()函数 判断给定文件名是否是用于可写权限。
-
filectime()函数 获取文件的创建时间,返回的是一个时间戳,使用的话需要使用date()函数进行转换成可读的日常时间。
-
filemtime()函数 获取文件的修改时间。
-
fileatime()函数 获取文件上次的访问时间。
-
stat()函数 获取文件大部分的属性值,即文件的相关信息内容,返回的是一个数组对象。
下标对应的介绍:
目录的基本操作
-
basename()函数 返回路径中的文件名部分。
-
dirname()函数 返回路径中的目录部分。
如果嵌套写法,它还可逐步去除最靠后的一个目录。
-
pathinfo()函数 返回文件的路径详细拆分信息。
-
opendir()函数 打开目录句柄,返回一个资源类型的数据。
-
readdir()函数 从目录句柄中读取条目,返回目录中下一个文件的文件名位置。
-
rewinddir()函数 倒回目录句柄,回到最初位置。
-
closedir()函数 关闭目录句柄。
-
mkdir()函数 新建目录。
-
rmdir()函数 删除指定的空目录,只能删除空目录,一个文件都不能存在,否则目录删除失败。
-
scandir()函数 列出指定路径中的文件和目录。
文件的基本操作
-
fopen()函数 打开一个文件或者是URL地址,返回的是一个资源类型的句柄,第二个参数mode值必须填写。
-
fread()函数 读取文件,第一个参数是打开文件路径,第二个参数是读取多少个字节的字符。
一个英文字符占1个字节,有意思的是读取中文,按照下面的规律,我们可以推断一个中文字符是占3个字节,如果读取4个字节则会发生中文乱码现象,再次证明1个中文相当于3字节。
-
fgets()函数 从文件指针中读取一行,也就是每一次读取一行。
-
feof()函数 检查文件指针光标是否到了文件结束的位置,true表面光标为到了最后面的结束位置。
-
fwrite()函数 写入文件内容。
第一个参数是目标文件,第二个参数是写入指定内容。
-
fseek()函数 指定文件指针的放置位置。
第一个参数是目标文件,第二个参数是偏移量,即间隔多少个字符后才开始输入,如果偏移量为0则表明接着后面写,不留空格,第三个参数是指针位置放置:有三个选项,SEEK_SET指定指针的位置,SEEK_CUR是从当前位置加上第二个参数的偏移量,SEEK_END直接把光标移到文件最末尾进行输入。
上面的fseek()函数去操纵指针的位置是比较冗余的了,如果我们想要在一个文件的末尾接着输入内容,其实可以直接使用追加写模式打开一个文件,实现的效果是一样的。
-
rewind()函数 倒回文件指针的位置。
-
flock()函数 轻便的咨询文件锁定。
分为共享锁LOCK_SH(读取程序)、独占锁LOCK_EX(写入程序,就是张三这个用户在写入文件的时候,李四也同时打开了这个文件,但李四不能输入,因为张三已经在输入中了,李四需要排队等张三写完了才到自己)、解锁LOCK_UN(无论共享或独占都可以解锁)、不希望加锁时发生堵塞(LOCK_NB)
李四需要排队,等待5秒结束后才能输入自己的内容
如果李四不想等5秒后才输入,可以使用直接LOCK_NB,让它加锁不堵塞,这样张三在编辑的时候,李四也可以参与进去编辑了。
张三在编辑的时候,李四想要进行编辑是不堵塞的,李四并不需要排队 -
ftruncate()函数 将文件截断到给定的长度,从文件的后面删起,保留给定的长度,返回1代表截取成功。
-
fclose()函数 关闭一个已经打开的文件指针。
-
file()函数 将整个文件读入到一个数组当中,返回一个数组。
-
copy()函数 拷贝文件。
-
unlink()函数 删除文件。
-
file_get_contents()函数 将整个文件或URL地址读入到一个字符串当中,返回一个字符串。
-
file_put_contents()函数 将一段字符串写入文件,会覆盖原来内容,也就是每次都以新内容写入覆盖原文。
有意思的是file_get_contents函数和file_put_contents函数结合一起用的话,会发生意想不到的结果,类似爬起代码,比如我们想获取一个网站的源码。
-
rename()函数 重命名一个文件或者目录。
-
readfile()函数 读入一个文件并写入到输出缓冲,一般应用于下载文件的情形。
网友评论