数据的存储与检索

文件处理

写入文件

  • 打开这个文件。如果不存在,就创建它。
  • 将数据写入这个文件
  • 关闭这个文件

读出数据

  • 打开这个文件,如果不能打开,意识到这一点并正确退出
  • 从文件中读出数据
  • 关闭这个文件

打开文件

$fp = fopen("$DOCUMENT_ROOT/../orders/orders.txt" , 'w');
  • 若没指定路径,这个文件将在脚本自身坐在的相同目录中查找或者创建。
  • UNIX 使用 / (正斜线)
  • WINDOWS 可以使用正斜线 / 和反斜线 \ 但是反斜线需要转义字符 \ \
  • 返回指向这个文件的指针
  • 第三个参数可选 ,如果希望在inclue_path中搜索,则设置为true;
  • 第四个参数可选,是否允许文件名以协议名称开始,远程打开文件。

预定义的服务器变量

$_SERVER['DOCUMENT_ROOT']
$DOCUMENT_ROOT
$HTTP_SERVER_VARS['DOCUMENT_ROOT']
  • 表单首选第一个

模式

在这里插入图片描述

通过FTP或者HTTP打开文件

  • 在php.ini 文件总,关闭allow_url_fopen 来禁用这个功能。

可能遇到问题

@ $fp = fopen("$DOCUMENT_ROOT/../orders/orders.txt" , 'w');
// 或者
$fp = @fopen("$DOCUMENT_ROOT/../orders/orders.txt" , 'w');
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);
  • fputs 是 fwrite 的别名函数

file_put_contents

int file_put_contents( 	string filename,
						string data,
						[, int flag 
						[, resource context]])
  • 此函数可以再不调用fopen( ) 函数打开文件之前,将data中的字符串写入filename指定的文件中
  • 匹配函数为 file_get_contents()

fwrite()

int fwrite( resource handle, string string [, int length])
  • length 是写入最大字符数。
fwrite($fp, $outputstring, strlen($outputstring));

关闭文件

fclose($fp);
// program
$fp = @fopen("$_SERVER['DOCUMENT_ROOT']", 'w');
flock($fp, LOCK_EX);
if (!$fp){
	echo "..."
	exit;
}
fwrite($fp, $outputstring, strlen($outputstring));
flock($fp, LOCK_UN);
fclose($fp);

读文件

@$fp = fopen("$_SERVERNT['DOCUMENT_ROOT']", 'rb');
if(!fp){
	echo '...';
	exit;
}
while(!feof($fp)){
	$order= fgets($fp, 999);
	echo $order."<br />";
}

feof()

唯一参数为文件指针,若指针指向文件末尾,返回true, File End Of File

fgets()、 fgetss()、fgetcsv()

fgets($fp, 999);
  • 读数据直到读到 \n 或者 EOF 或者 998B。
  • 最大长度为指定长度-1B。
string fgetss(resource fp, int length, string [allowable_tags]);
  • 可过滤PHP和HTML的标记,如果需要过滤特殊标记,添加在allowable_tags中
array fgetcsv( resource fp, int length [, string delimiter
				[, string enclosure]]);
$order= fgercsv($fp, 100, "\t");
  • 从文件中读取一行 \n 在特定制表符 \t 的地方将文件分行 ,返回一个数组
  • enclosure 指定每行中封闭每一个域的字符,若没指定,默认为 " (双引号)

读取整个文件

readfile("$DOCUMENT_ROOT/../orders/orders.txt");
int readfile(string filename, [,int use_include_path [, resource context]])
  • readfile() 将会打开这个文件,并将文件输出到标准输出中,然后关闭这个文件。返回值为从文件读出的字节综述
$fp = fopen("$DOCUMENT_ROOT/../orders/orders.txt" , 'rb');
fpassthru($fp);
  • 如果读取成功返回true;
$filearry = file("$DOCUMENT_ROOT/../orders/orders.txt");
  • 每行作为一个元素保存在数组中;

读取字符

while(!feof($fp)){
	$char = fgetc($fp);
	if (!feof($fp))
		echo ($char=="\n" ? "<br \>" :$char);
}
  • 唯一参数指针 ,返回下一个字符

读取任意长度

string fread(resource fp, int length);
  • 读取或者读满length指定的字节数或者读到文件末尾;

其他文件函数

查看文件是否存在

if (file_exits("$DOCUMENT_ROOT/../orders/orders.txt")){
	echo '...';
}else{
	echo '...';
}

确定文件大小

$fp = fopen ("$DOCUMENT_ROOT/../orders/orders.txt", 'rb');
echo n12br(fread($fp, filesize("$DOCUMENT_ROOT/../orders/orders.txt")));
fclose($fp);
  • 以字节为单位返回文件大小
  • n21br() 将 \n 转化为 <br >

删除文件

unlink("$DOCUMENT_ROOT/../orders/orders.txt");
  • 若删除失败返回false;

文件定位

echo 'Final position of the file pointer is'.(ftell($fp));
echo '<br \>';
rewind($fp);
echo 'After rewind, the position is'.(ftell($fp));
echo '<br \>';
  • ftell() 以字节为单位返回当前指针在文件中的位置
  • rewind() 可以将文件指针复位到文件的开始
int fseek( resource fp, int offset [, int whence])
  • fp从whence位置移动 offset 个字节
  • whence 是可选参数 默认值 SEEK_SET 为文件的开始处
  • 也可以为其他值 SEEK_CUR 指针当前位置 SEEK_END 文件结束

文件锁定

int flock(resource fp, int operation [, int & wouldblock])
  • 锁定成功为true 否则为false
    在这里插入图片描述
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值