【PHP基础】文件操作
1.文件的打开、读取和关闭
1.1、fopen() 打开或者创建文件
fopen() 的第一个参数指被打开的文件名,第二个参数规定打开文件的模式。如果打开失败,die函数会生成错误消息。
<?php $myfile = fopen("webdictionary.txt", "r") or die("Unable to open file!"); echo fread($myfile,filesize("webdictionary.txt")); fclose($myfile); ?>
文件会以如下模式之一打开:
| 模式 | 描述 | 
|---|---|
| r | 打开文件为只读。文件指针在文件的开头开始。 | 
| w | 打开文件为只写。删除文件的内容或创建一个新的文件,如果它不存在。文件指针在文件的开头开始。 | 
| a | 打开文件为只写。文件中的现有数据会被保留。文件指针在文件结尾开始。创建新的文件,如果文件不存在。 | 
| x | 创建新文件为只写。返回 FALSE 和错误,如果文件已存在。 | 
| r+ | 打开文件为读/写、文件指针在文件开头开始。 | 
| w+ | 打开文件为读/写。删除文件内容或创建新文件,如果它不存在。文件指针在文件开头开始。 | 
| a+ | 打开文件为读/写。文件中已有的数据会被保留。文件指针在文件结尾开始。创建新文件,如果它不存在。 | 
| x+ | 创建新文件为读/写。返回 FALSE 和错误,如果文件已存在。 | 
1.2、fread() 读取打开的文件
fread() 的第一个参数包含待读取文件的文件名,第二个参数规定待读取的最大字节数。
如下 PHP 代码把 "webdictionary.txt" 文件读至结尾:
fread($myfile,filesize("webdictionary.txt"));
1.3、fclose()关闭打开的文件
注释:用完文件后把它们全部关闭是一个良好的编程习惯。您并不想打开的文件占用您的服务器资源。
fclose() 需要待关闭文件的名称(或者存有文件名的变量):
<?php $myfile = fopen("webdictionary.txt", "r"); // some code to be executed.... fclose($myfile); ?>
1.4、fwrite() 函数用于写入文件。
fwrite() 的第一个参数包含要写入的文件的文件名,第二个参数是被写的字符串。
<?php $myfile = fopen("newfile.txt", "w") or die("Unable to open file!"); $txt = "Bill Gates\n"; fwrite($myfile, $txt); $txt = "Steve Jobs\n"; fwrite($myfile, $txt); fclose($myfile); ?>
请注意,我们向文件 "newfile.txt" 写了两次。在每次我们向文件写入时,在我们发送的字符串 $txt 中,第一次包含 "Bill Gates",第二次包含 "Steve Jobs"。在写入完成后,我们使用 fclose() 函数来关闭文件。
如果我们打开 "newfile.txt" 文件,它应该是这样的:
Bill Gates
Steve Jobs
注意:如果"newfile.txt"本身包含了一些数据,此时进行写入操作,之前已存在的数据会被擦除并重新开始写入。
2、其他文件操作相关函数
2.1、fgets() 函数用于从文件读取单行。
下例输出 "webdictionary.txt" 文件的首行:
<?php $myfile = fopen("webdictionary.txt", "r") or die("Unable to open file!"); echo fgets($myfile); fclose($myfile); ?>
注释:调用 fgets() 函数之后,文件指针会移动到下一行。
2.2、feof() 函数检查是否已到达 "end-of-file" (EOF)
feof() 对于遍历未知长度的数据很有用。
下例逐行读取 "webdictionary.txt" 文件,直到 end-of-file:
<?php $myfile = fopen("webdictionary.txt", "r") or die("Unable to open file!"); // 输出单行直到 end-of-file while(!feof($myfile)) { echo fgets($myfile) . "<br>"; } fclose($myfile); ?>
2.3、fgetc() 函数用于从文件中读取单个字符
下例逐字符读取 "webdictionary.txt" 文件,直到 end-of-file:
<?php $myfile = fopen("webdictionary.txt", "r") or die("Unable to open file!"); // 输出单字符直到 end-of-file while(!feof($myfile)) { echo fgetc($myfile); } fclose($myfile); ?>
注释:在调用 fgetc() 函数之后,文件指针会移动到下一个字符。
如需完整的 PHP 文件系统参考手册,请访问  PHP Filesystem 参考手册。
2.完整的文件系统操作函数(包括目录操作)
| 函数 | 描述 | PHP | 
|---|---|---|
| basename() | 返回路径中的文件名部分。 | 3 | 
| chgrp() | 改变文件组。 | 3 | 
| chmod() | 改变文件模式。 | 3 | 
| chown() | 改变文件所有者。 | 3 | 
| clearstatcache() | 清除文件状态缓存。 | 3 | 
| copy() | 复制文件。 | 3 | 
| delete() | 参见 unlink() 或 unset()。 | |
| dirname() | 返回路径中的目录名称部分。 | 3 | 
| disk_free_space() | 返回目录的可用空间。 | 4 | 
| disk_total_space() | 返回一个目录的磁盘总容量。 | 4 | 
| diskfreespace() | disk_free_space() 的别名。 | 3 | 
| fclose() | 关闭打开的文件。 | 3 | 
| feof() | 测试文件指针是否到了文件结束的位置。 | 3 | 
| fflush() | 向打开的文件输出缓冲内容。 | 4 | 
| fgetc() | 从打开的文件中返回字符。 | 3 | 
| fgetcsv() | 从打开的文件中解析一行,校验 CSV 字段。 | 3 | 
| fgets() | 从打开的文件中返回一行。 | 3 | 
| fgetss() | 从打开的文件中读取一行并过滤掉 HTML 和 PHP 标记。 | 3 | 
| file() | 把文件读入一个数组中。 | 3 | 
| file_exists() | 检查文件或目录是否存在。 | 3 | 
| file_get_contents() | 将文件读入字符串(包括远程文件)。 | 4 | 
| file_put_contents() | 将字符串写入文件。 | 5 | 
| fileatime() | 返回文件的上次访问时间。 | 3 | 
| filectime() | 返回文件的上次改变时间。 | 3 | 
| filegroup() | 返回文件的组 ID。 | 3 | 
| fileinode() | 返回文件的 inode 编号。 | 3 | 
| filemtime() | 返回文件的上次修改时间。 | 3 | 
| fileowner() | 文件的 user ID (所有者)。 | 3 | 
| fileperms() | 返回文件的权限。 | 3 | 
| filesize() | 返回文件大小。 | 3 | 
| filetype() | 返回文件类型。 | 3 | 
| flock() | 锁定或释放文件。 | 3 | 
| fnmatch() | 根据指定的模式来匹配文件名或字符串。 | 4 | 
| fopen() | 打开一个文件或 URL。 | 3 | 
| fpassthru() | 从打开的文件中读数据,直到 EOF,并向输出缓冲写结果。 | 3 | 
| fputcsv() | 将行格式化为 CSV 并写入一个打开的文件中。 | 5 | 
| fputs() | fwrite() 的别名。 | 3 | 
| fread() | 读取打开的文件。 | 3 | 
| fscanf() | 根据指定的格式对输入进行解析。 | 4 | 
| fseek() | 在打开的文件中定位。 | 3 | 
| fstat() | 返回关于一个打开的文件的信息。 | 4 | 
| ftell() | 返回文件指针的读/写位置 | 3 | 
| ftruncate() | 将文件截断到指定的长度。 | 4 | 
| fwrite() | 写入文件。 | 3 | 
| glob() | 返回一个包含匹配指定模式的文件名/目录的数组。 | 4 | 
| is_dir() | 判断指定的文件名是否是一个目录。 | 3 | 
| is_executable() | 判断文件是否可执行。 | 3 | 
| is_file() | 判断指定文件是否为常规的文件。 | 3 | 
| is_link() | 判断指定的文件是否是连接。 | 3 | 
| is_readable() | 判断文件是否可读。 | 3 | 
| is_uploaded_file() | 判断文件是否是通过 HTTP POST 上传的。 | 3 | 
| is_writable() | 判断文件是否可写。 | 4 | 
| is_writeable() | is_writable() 的别名。 | 3 | 
| link() | 创建一个硬连接。 | 3 | 
| linkinfo() | 返回有关一个硬连接的信息。 | 3 | 
| lstat() | 返回关于文件或符号连接的信息。 | 3 | 
| mkdir() | 创建目录。 | 3 | 
| move_uploaded_file() | 将上传的文件移动到新位置。 | 4 | 
| parse_ini_file() | 解析一个配置文件。 | 4 | 
| pathinfo() | 返回关于文件路径的信息。 | 4 | 
| pclose() | 关闭有 popen() 打开的进程。 | 3 | 
| popen() | 打开一个进程。 | 3 | 
| readfile() | 读取一个文件,并输出到输出缓冲。 | 3 | 
| readlink() | 返回符号连接的目标。 | 3 | 
| realpath() | 返回绝对路径名。 | 4 | 
| rename() | 重名名文件或目录。 | 3 | 
| rewind() | 倒回文件指针的位置。 | 3 | 
| rmdir() | 删除空的目录。 | 3 | 
| set_file_buffer() | 设置已打开文件的缓冲大小。 | 3 | 
| stat() | 返回关于文件的信息。 | 3 | 
| symlink() | 创建符号连接。 | 3 | 
| tempnam() | 创建唯一的临时文件。 | 3 | 
| tmpfile() | 建立临时文件。 | 3 | 
| touch() | 设置文件的访问和修改时间。 | 3 | 
| umask() | 改变文件的文件权限。 | 3 | 
| unlink() | 删除文件。 | 3 | 
 
                    
                     
                    
                 
                    
                
 
                
            
         
         浙公网安备 33010602011771号
浙公网安备 33010602011771号