PHP学习笔记第二章,主要包括打开/创建/关闭/锁定/删除文件,从文件中读/写数据等内容。
一、打开文件
文件操作的基本步骤是:打开文件–>读/写文件–>关闭文件,其中打开文件是第一步。
1、使用 fopen() 打开文件
fopen() 函数定义:
resource fopen ( string $filename , string $mode [, bool $use_include_path = false [, resource $context ]] )
fopen() 函数示例:
$handle = fopen("/home/rasmus/file.txt", "r");
$fp = fopen("$_SERVER['DOCUMENT_ROOT']/../orders/orders.txt",'w');
注意,使用绝对路径时,Linux下是/xxx/,而Windows下是x:\xxx\,一般推荐使用相对目录。
2、打开文件模式
和c语言类似,fopen()同样通过mode参数来确定打开文件的访问类型。
| mode | 说明 |
|---|---|
| “r” | 只读方式打开,将文件指针指向文件头。 |
| “r+” | 读写方式打开,将文件指针指向文件头。 |
| “w” | 写入方式打开,将文件指针指向文件头并将文件大小截为零。如果文件不存在则尝试创建之。 |
| “w+” | 读写方式打开,将文件指针指向文件头并将文件大小截为零。如果文件不存在则尝试创建之。 |
| “x” | 创建并以写入方式打开,将文件指针指向文件头。如果文件已存在,则 fopen() 调用失败并返回 FALSE,并生成一条 E_WARNING 级别的错误信息。如果文件不存在则尝试创建之。 |
| “x+” | 创建并以读写方式打开,将文件指针指向文件头。如果文件已存在,则 fopen() 调用失败并返回 FALSE,并生成一条 E_WARNING 级别的错误信息。如果文件不存在则尝试创建之。 |
| “a” | 写入方式打开,将文件指针指向文件末尾。如果文件不存在则尝试创建之。 |
| “a+” | 读写方式打开,将文件指针指向文件末尾。如果文件不存在则尝试创建之。 |
| “b” | 和其它模式组合使用,以二进制方式打开文件,是推荐且默认的方式。 |
| “a+” | 和其它模式组合使用,以文本方式打开文件,只在Windows下有效,不推荐。 |
3、其它注意点
- 可以打开ftp和http协议的文件,也可以在php.ini关闭allow_url_fopen来禁止打开远程文件。
- Linux打开文件必须注意该文件的读写权限问题。
二、读写文件
打开文件后,可以用相关函数读取和写入数据。
1、读取文件内容常用函数
string fgets ( resource $handle [, int $length ] )从文件指针开始读取一行,且最大长度不超过length,length默认为1024
string fgetss ( resource $handle [, int $length [, string $allowable_tags ]] )同fgets,但会过滤除allowable_tags参数外的HTML和PHP的标签。
array fgetcsv ( resource $handle [, int $length [, string $delimiter = ',' [, string $enclosure = '"' [, string $escape='\\']]]] )同fgets,但解析 CSV 字段,返回数组。
string fgetc ( resource $handle )从文件指针开始,读取一个字符。
string fread ( resource $handle , int $length )从文件指针开始,读取指定长度的内容。
int readfile ( string $filename [, bool $use_include_path = false [, resource $context ]] )打开文件并读取整个文件内容至输出缓存,然后关闭文件。
int fpassthru ( resource $handle )读取文件指针当前位置到文件结束的数据至输出缓存。
array file ( string $filename [, int $flags = 0 [, resource $context ]] )将全部文件内容读入一个数组中,每行内容成为一个数组元素。
string file_get_contents ( string $filename [, bool $use_include_path = false [, resource $context [, int $offset = -1 [, int $maxlen = -1 ]]]] )将全部文件内容读入一个字符串中。
2、写文件常用函数
int fwrite ( resource $handle , string $string [, int $length ] )从文件指针开始,写入最大长度为参数length的字符串内容。
int file_put_contents ( string $filename , mixed $data [, int $flags = 0 [, resource $context ]] )打开文件(如果不存在则创建文件),写入data,关闭文件,会覆盖原文件内容,除非指定FILE_APPEND参数。
3、文件指针操作函数
bool rewind ( resource $handle )将文件指针的位置倒回文件的开头。
int fseek ( resource $handle , int $offset [, int $whence = SEEK_SET ] )将文件指针的位置移动到参数whence和offset 所指定的位置。
int ftell ( resource $handle )返回文件指针的位置,注意PHP的文件指针是从0开始计数的。
bool feof ( resource $handle )判断文件指针是否已经指向文件末尾。
三、其它文件操作相关函数
bool fclose ( resource $handle )关闭打开的文件。
bool file_exists ( string $filename )检查文件或目录是否存在。
int filesize ( string $filename )返回文件大小。
bool unlink ( string $filename [, resource $context ] )删除指定文件。
bool flock ( resource $handle , int $operation [, int &$wouldblock ] )锁定文件,在NFS和FAT等文件系统上无效。
PHP学习笔记2 – 用文件来存取数据 有1条评论
引用: