[原] 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) 除了文件访问权限限制外, 没有简单的办法区分不同级别的数据访问.

如: 构建合理的数据访问控制权限, 如何做?

posted on 2012-02-24 00:45  DavidYanXW  阅读(206)  评论(0编辑  收藏  举报