PHP文件处理
一般分为三个步骤:
打开或者创建文件
打开或者创建文件
fopen()
@$fp=fopen(filename,mode);打开文件可能遇到下列问题
没有权限时,PHP会给出一个警告,可以通过
@
来抑制错误,然后通过if判断以一种对用户友好的方式来处理这个错误if(!$fp){ DO... exit; }
操作文件
写入
fwrite()
int fwrite ( resource $handle , string $string [, int $length ] )
同时写上写入数据的长度length的话会有效避免一些跨平台兼容问题
读取
fgetc()
fgets()
fgetss()
fgetcsv()
readfile()
fpassthru()
file()
fread()
判断何时读完文件
feof()
关闭文件
fclose()
除此之外还有一些有用的文件函数:
查看文件是否存在:file_exists()
确定文件大小:filesize()
删除一个文件:unlink()
在文件中定位:rewind()
fseek()
ftell()
文件锁定:flock()
bool flock ( resource $handle , int $operation [, int &$wouldblock ] )
操作值 | 意义 |
---|---|
LOCK_SH(以前1)LOCK_SH(以前1) | 读操作锁定,这意味着文件可以共享,其他人可以读该文件 |
LOCK_EX(以前2) | 写操作锁定,这是互斥的。该文件不能被共享 |
LOCK_UN(以前3) | 释放已有的锁定 |
LOCK_NB(以前4) | 防止在请求加锁时发生阻塞 |
一个简单的写入txt和读取txt文本的例子:
写入
$outputString = $date."\t".$tireqty." tires\t".$oilqty." bottles oil\t".$sparkqty." spark plugs\t\$".$totalamout."\t".$address."\r\n";
//open file for appending
@ $fp = fopen("$DOCUMENT_ROOT/../orders/orders.txt", 'ab');
if(!$fp){
echo "<p><strong>Your order could not be processed at this time. Please try again later.</strong></p></body></html>";
exit;
}
fwrite($fp, $outputString,strlen($outputString));
flock($fp,LOCK_UN);
fclose($fp);
读取
@$fp = fopen("$DOCUMENT_ROOT/../orders/orders.txt", 'rb');
if(!$fp){
echo "<p><strong>No orders pending. Please try again later.</strong></p></body></html>";
exit;
}
echo "Date\tTires\tOil\tSparkPlugs\ttotalamout\tAddress<br/>";
while(!feof($fp)){
$order=fgets($fp,999);
echo $order."<br/>";
}
fclose($fp);