您的位置:首页 > 编程语言 > PHP开发

整理个关于PHP文件读写的学习笔记

2014-08-16 23:38 731 查看
'r' 只读方式打开,将文件指针指向文件头。

'r+' 读写方式打开,将文件指针指向文件头。


r+ 打开一个文件用于读写,这个文件必须存在,否则打开失败,打开时,文件指针指向文件头,如果直接写会覆盖原有内容,注意,是覆盖而不是w模式的先清空原有数据,r+模式下,未覆盖到的数据会被保留,也可以通过定位文件指针,在文件任意位置读写数据。

'w' 写入方式打开,将文件指针指向文件头并将文件大小截为零。如果文件不存在则尝试创建之。

'w+' 读写方式打开,将文件指针指向文件头并将文件大小截为零。如果文件不存在则尝试创建之。

'a' 写入方式打开,将文件指针指向文件末尾。如果文件不存在则尝试创建之。

'a+' 读写方式打开,将文件指针指向文件末尾。如果文件不存在则尝试创建之。

'x' 创建并以写入方式打开,将文件指针指向文件头。如果文件已存在,则 fopen() 调用失败并返回 FALSE,并生成一条 E_WARNING 级别的错误信息。如果文件不存在则尝试创建之。这和给 底层的 open(2) 系统调用指定 O_EXCL|O_CREAT 标记是等价的。

'x+' 创建并以读写方式打开,其他的行为和 'x' 一样。

'c' Open the file for writing only. If the file does not exist, it is created. If it exists, it is neither truncated (as opposed to 'w'), nor the call to this function fails (as is the case with 'x'). The file pointer
is positioned on the beginning of the file. This may be useful if it's desired to get an advisory lock (see flock()) before attempting to modify the file, as using 'w' could truncate the file before the lock was obtained (if truncation is desired, ftruncate()
can be used after the lock is requested).'c+' Open the file for reading and writing; otherwise it has the same behavior as 'c'.


关于文件名: 使用正斜线分隔目录, 代码无需修改即可在unix和windows平台上运行.

URL中的域名不区分大小写, 但是路径和文件名可能区分大小写

@ 符号可抑制php的错误信息

例如:

@ $fp = fopen("/webroot/a.txt", 'rb');
if(!$fp){
echo "读取文件时出现了错误";
exit;
}

写文件:
fwrite() /*file write*/

fputs() /*file put string*/

file_put_contents() /*php5*/ 

fputs()是fwrite()的别名函数.

fwrite($fp, $outputstring, strlen($outputstring)); /*二进制写入时, 使用第三个参数可避免一些跨平台兼容问题*/

读数据:

1. 每次读取一行:

    fgets()

    fgetss() /*出于安全考虑*/

    fgetcsv()

2. 读取整个文件:

    readfile()

    fpassthru()

    file()

    file_get_contents()

3. 读取一个字符

    fgetc() /*返回EOF, 读出后需要判断一下*/

4. 读取任意长度

    fread()

其他关于文件操作的函数

file_exists()

filesize() /*结合fread()可一次读取整个文件*/

unlink() /*删除文件, php没有delete函数*//*无法删除返回false, 通常是应为权限不够或文件不存在*/

rewind() /*将文件指针复位到文件开始*/

fseek() /*以字节为单位报告文件指针当前在文件中的位置*/

ftell() /*将文件指针指向文件某个位置*/

文件锁定

flock() /*不能在网络文件系统使用, 老的文件系统也不能用, 多线程服务器api也不能用(实现在进程级别)*/ /*锁定成功返回true*/

第二个参数可能的操作值:

LOCK_SH 读锁, 文件可被共享读

LOCK_EX 写锁, 互斥, 该文件不能被共享

LOCK_UN 释放已有锁定

LOCK_NB 防止在请求加锁时发生阻塞(windows不支持)

其他手册:

http://cn2.php.net/filesystem
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签:  php file 文件