一、fopen(filename,mode,include_path,context)
filename:指定文件。
1、本地文件的绝对路径或相对路径;
2、远程文件。FTP、HTTP或者其他协议的文件路径。
以ftp://开始的,fopen()函数将建立一个连接到指定服务器的被动模式,并返回一个指向文件开始的指针
以http://开始的,fopen()函数将建立一个到指定服务器的HTTP连接,并返回一个指向HTTP响应的指针
mode:文件模式。
a:追加。打开文件,如果文件已有内容,将从文件末尾开始写,如果文件不存在,则创建这个文件
a+:追加。打开文件,如果文件已有内容,将从文件末尾开始读写,如果文件不存在,则创建这个文件
b:二进制。二进制模式,用于与其他模式进行连接。Windows系统可以区分二进制文件和文本文件,Unix不能区分。该模式可以获得最大程度的可移植性
r:只读。打开文件,从文件头开始读
r+:读写。打开文件,从文件头开始读写
w:读写。打开文件,从文件头开始读,如果该文件已经存在,将删除文件所有内容。如果该文件不存在,则创建这个文件
w+:读写。打开文件,从文件头开始读写,如果该文件已经存在,将删除文件所有内容。如果该文件不存在,则创建这个文件。
include_path:是否需要在include_path中搜索文件。
$fp = fopen("test.txt", "ab", true);
不需要提供目录名称或路径,不过搜索会消耗时间和资源。
context:规定文件句柄的环境。
二、读取整个文件
1、readfile()
打开文件,并且将文件内容输出到标准输出中,然后关闭文件
readfile($filename);
2、fpassthru()
先通过fopen打开文件,然后将文件指针作为参数传递给fpasthru()
$fp = fopen($filename, "rb");
fpassthru($fp);
3、file()
与readfile()相似,不同之处在于file()将结果发送到一个数组当中
$data = file($filename);
4、file_get_contents()
与readfile()相似,不同之处在于file_get_contents()将结果以字符串的形式返回,不回显到浏览器中
$data = file_get_contents($filename);
1、fgets()
读取一行数据,知道读到一个换行字符(\n)、或者文件结束符EOF,或者从文件中读取了($length-1)B
$fp = fopen($filename, "rb");
while(!$fp) {
$order = fgets($fp, $length);
}
2、fgetss()
与fgets()相似,不同之处在于fgetss()可以过滤掉任何特殊的标记
$fp = fopen($filename, "rb");
while(!$fp) {
$order = fgetss($fp, $length, $tags);
}
3、fgetcsv()
与fgets()相似,不同之处在于fgetcsv()可以在定界符位置将文件分成多行
$fp = fopen($filename, "rb");
while(!$fp) {
$order = fgetcsv($fp, $length, "\t");
}
四、读取一个字符
1、fgetc()
从文件中一次读取一个字符。它的缺点就是它返回文件结束符EOF,而fgets()不会
$fp = fopen($filename, "rb");
while(!feof($fp)) {
$order = fgetc($fp);
if(!feof($fp)) {
echo $order;
}
}
五、读取任意长度
1、fread()
从文件中读取任意长度的字节
$fp = fopen($filename, "rb");
while(!$fp) {
$order = fread($fp, $length);
}