1、文件处理包括:读取、关闭、重写;访问一个文件需要三步:打开文件、读写文件、关闭文件。
2、打开文件使用fopen() 函数,关闭文件使用fclose() 函数。
3、从文件中读取数据——读取整个文件。
(1)readfile() 函数用于读入一个文件并将其写入到输出缓存,出错则返回false。
[注:使用该函数不需要打开/关闭文件,不需要echo/print等输出语句,直接写出文件路径即可]
(2)file() 函数将文章内容按行存放在数组中,包括换行符在内,出错则返回false。
(3)file_get_contents() 函数将文件内容(filename)读入一个字符串。如果有offset和maxlen参数,
将在offset所指定的位置开始读取长度为maxlen的内容。失败则返回false。
4、从文件中读取数据——读取一行数据:fgets() 函数 和 fgetss()函数,都是一次读取一行数据,后者会过滤掉被读取内容中的html和php标记。
5、从文件中读取数据——读取一个字符fgetc() 函数,在对某一个字符进行查找、替换时,有针对性的对某个字符进行读取。
6、从文件中读取数据——读取任意长度的字串:fread() 函数
7、将数据写入文件:fwrite() 函数和file_put_contents() 函数。
8、操作文件:读写、复制、重命名、查看修改日期。
9、打开目录:opendir() 函数。(可以在opendir()前面加上“@”符号抑制错误信息的输出)。关闭目录:closedir() 函数。
10、is_dir() 函数判断当前路径是否是一个合法的目录,是返回true,否则返回false。
11、浏览目录:scandir() 函数,array scandir(string directory [, int sorting_order]):其中sorting_order指定排序顺序,默认为升序,添加该参数后变为降序。
12、操作目录:
【文件处理的高级应用】
1、除了可以对文件进行基本的读写操作外,还可以对文件指针进行查找、定位,对正在读取的文件进行锁定等。
2、远程文件的访问:PHP支持URL格式的文件调用,配置php.ini中“allow_url_fopen”选项设为on即可。如:fopen(‘http://127.0.0.1/myweb/index.php’,’rb’);
3、PHP可以实现文件指针的定位和查询,实现所需信息的快速查询。文件指针函数包括:rewind()、fseek()、feof()、ftell() 函数。
rewind()函数将文件handle的指针设为文件流的开头;fseek()函数实现文件指针的定位;
feof()函数判断文件指针是否在文件尾;ftell()函数返回当前指针的位置。
4、锁定文件的函数为:flock(),bool flock(int handle , int operation)
5、文件上传,首先配置php.ini.如果是集成安装包则可以省略。
6、预定义变量$_FILES 存储的是上传文件的相关信息,这些信息对于上传功能有很大作用,该变量是一个二维数组。
7、文件上传函数:使用move_uploaded_file() 函数上传文件。使用该函数时,创建form表单时必须设置enctype="multipart/form-data"属性。
经典实例:允许上传500KB以下的文件:
【文件操作】
1.使用basename()函数查看文件名称,返回文件路径中去掉路径后的文件名称。
2.使用dirname()函数查看目录名称,返回路径中去掉文件名称后的目录部分。
3.使用realpath()函数查看文件的真实目录,返回文件的绝对路径。
4.filetype()函数显示文件类型,成功则返回类型(如下表),失败返回false。
5.filesize()函数计算文件大小,成功则返回字节数(byte),失败返回false。
6.fileatime()函数查看文件上次被访问的时间,返回时间戳。
filemtime()函数查看文件上次被修改的时间,返回时间戳。
7.disk_total_space()函数返回一个目录所在的磁盘分区大小(字节数)。
8.fileperms()函数获取文件的权限:
【目录的操作】
9.mkdir()函数创建目录:
mkdir(‘image’,0777) //创建目录image并设置为777权限
10.opendir()函数打开目录:
if(opendir("D:/www")) echo 'ok'; else echo 'fail';
11.closedir()函数关闭目录:
12.readdir()函数读取文件目录,成功则返回该目录下所有文件名称:
13.rmdir()函数删除空目录:
【文件操作】
14.fopen()函数打开文件(设置较多,可参考原书17.4.1,P307页):
15.fclose()函数用于关闭文件。打开的文件在操作结束后要及时关闭,以此减轻服务器的负担。
16.写入文件函数:fwrite()、fputs()、file_put_contents()。
17.(1)使用fread()函数可以安全地读取二进制文件:
(2)使用fgets()函数可以读取文档中的一行:
注:fgetss()与上类似,只是会去掉HTML和PHP标记。用到的时候再去查。
18.使用unlink()函数删除文件;使用copy()函数可以复制文件;使用rename()函数可以重命名文件。
19.关于字符流,用到的时候,参考原书17.5.
案例:HTTPS的安全基础是SSL,普通方法不能获取其内容,可以用流获取HTTPS加密内容:
20.项目实践——自定义错误日志
【代码】https://github.com/rxbook/study-php/tree/master/code08