php中的文件操作常用方法:
<?php
/**
* 以追加方式写入文件
* 写之前先判断能否打开,锁定后再写入,写完后释放锁,关闭文件。
* @param unknown_type $file
* @param unknown_type $data
*/
function write_file($file, $data) {
if (! $fp = fopen ( $file, 'a' )) {
echo ('无法打开缓存文件.');
return false;
}
//LOCK_NB,排它型锁定
if (! flock ( $fp, LOCK_EX )) {
echo ('无法锁定缓存文件.');
return false;
}
//写入字节流,serialize写入其他格式
if (! fwrite ( $fp, $data )) {
echo ('无法写入缓存文件.');
return false;
}
//释放锁定,关闭文件
flock ( $fp, LOCK_UN );
fclose ( $fp );
return true;
}
/**
* 创建目录
* 类似"xx/xx/xxx.txt",但是不创建文件。
* @param "/xxx/xxx.txt" $path
* @param 0777 $mode
*/
function create_dirs($file_path, $mode = 0777) //mode 077
{
$flag = true;
$dirs = explode ( '/', $file_path );
$count = count ( $dirs );
$path = "";
for($i = 0; $i < $count; $i ++) {
$path .= $dirs [$i];
//如果$dirs [$i]不为空并且目录不存在。防止情况"/a/b",则第一层为"".
if (($dirs [$i]) && (! file_exists ( $path ))) {
//判断路径最后一层是否是文件(如果包含.就是文件,则不创建最后一层文件)
if (($i == $count - 1) && (strrpos ( $dirs [$i], "." ) != false)) {
continue;
} else {
//mkdir函数创建目录
$flag = mkdir ( $path, $mode );
}
}
$path .= "/";
}
return $flag;
}
?>
文件使用方式 意 义
“rt” 只读打开一个文本文件,只允许读数据
“wt” 只写打开或建立一个文本文件,只允许写数据
“at” 追加打开一个文本文件,并在文件末尾写数据
“rb” 只读打开一个二进制文件,只允许读数据
“wb” 只写打开或建立一个二进制文件,只允许写数据
“ab” 追加打开一个二进制文件,并在文件末尾写数据
“rt+” 读写打开一个文本文件,允许读和写
“wt+” 读写打开或建立一个文本文件,允许读写
“at+” 读写打开一个文本文件,允许读,或在文件末追加数据
“rb+” 读写打开一个二进制文件,允许读和写
“wb+” 读写打开或建立一个二进制文件,允许读和写
“ab+” 读写打开一个二进制文件,允许读,或在文件末追加数据
对于文件使用方式有以下几点说明:
1. 文件使用方式由r,w,a,t,b,+六个字符拼成,各字符的含义是:
r(read): 读
w(write): 写
a(append): 追加
t(text): 文本文件,可省略不写
b(banary): 二进制文件
+: 读和写
2. 凡用“r”打开一个文件时,该文件必须已经存在,且只能从该文件读出。
3. 用“w”打开的文件只能向该文件写入。若打开的文件不存在,则以指定的文件名建立该文件,若打开的文件已经存在,则将该文件删去,重建一个新文件。
4. 若要向一个已存在的文件追加新的信息,只能用“a ”方式打开文件。但此时该文件必须是存在的,否则将会出错。
5. 在打开一个文件时,如果出错,fopen将返回一个空指针值NULL。在程序中可以用这一信息来判别是否完成打开文件的工作,并作相应的处理。
(NULL)。由此可判断文件打开是否成功。
来自:http://www.xxlinux.com/linux/article/development/soft/20070601/8652.html