[原]|[原] PHP文件及目录操作总结(一)

【[原]|[原] PHP文件及目录操作总结(一)】一. 文件操作:
1. 写文件
常规:
fopen -- 打开文件 (注: 文件模式)
fwrite(fputs--别名) -- 写数据
fclose -- 关闭文件
备注:
文件模式, 常用的有8种(r,r+,w,w+,x,x+,a,a+),另外还有b(推荐)和t(不推荐).
简单:
file_put_contents() -- 效果等同上面的操作. 第3个参数可以控制是否删除已有内容.

2. 读文件
常规:
1)
fopen -- 打开文件
2)
i. fgetc -- 每次读取单个字符串(不常使用)
ii. fgets/fgetss/fgetcsv -- 每次读取一行数据
fgetss与fgets区别是, fgetss可以过滤PHP和HTML标记.
fgetcsv可以使用定界符, 在处理excel或者逗号分隔的文件时容易实现.
iii. fpassthru -- 读取整个文件, 将文件输出到标准输出(如:浏览器), 返回值是false或者输出的字符数目.
iv. fread -- 读取指定长度的数据, 返回值为字符串
3)
fclose --关闭文件
4)
feof -- 读取文件时, 注意判断是否到文件结尾

简单:
readfile/file/file_get_contents -- 读取整个文件
readfile: 会将文件内容输出到标准输出 (如: 浏览器)
file: 会将文件内容返回到一个数组中, 每行就是一个元素.
file_get_contents: 会将整个文件内容返回到字符串中,二进制安全. (优先使用)
3. 其他函数
file_exists: 判断文件是否存在
filesize: 返回文件大小, 单位: 字节
unlink: 删除文件.
rewind: 文件指针复位到文件开始.
fseek: 移动文件指针到某个位置.
ftell: 报告文件指针当前位置. 单位: 字节
4. 文件锁定
为了避免同时操作, 引入文件锁定函数flock, 操作值有4中:
LOCK_SH: 读锁定. 文件可共享, 其他人也可以读.
LOCK_EX: 写锁定. 不能被共享.
LOCK_UN: 释放所有锁定.
LOCK_NB: 防止请求加锁时阻塞.
5. PHP操作文件的缺点:
1) 文件变大时, 操作会变慢;
如: 操作一个200MB的文本文件, 如何做?
2) 查询记录非常困难.
如: 二分法查询或者定长记录查询关键字域, 如何做?
3) 并发访问问题.
如: 高并发访问时, 需要等待文件解锁, 如何做?
4) 随机插入记录,编辑或者删除记录比较困难
如: 文件中间插入记录,修改,删除记录,如何做? 如果文件很大(200MB), 如何做?
5) 除了文件访问权限限制外, 没有简单的办法区分不同级别的数据访问.
如: 构建合理的数据访问控制权限, 如何做?
转载于:https://www.cnblogs.com/DavidYan/articles/2365962.html

    推荐阅读