PHP高级教程(3):PHP文件处理
fopen() 函数用于在 PHP 中打开文件。
打开文件
fopen() 函数用于在 PHP 中打开文件。
此函数的第一个参数含有要打开的文件的名称,第二个参数规定了使用哪种模式来打开文件:
<html> <body> <?php $file=fopen("welcome.txt","r"); ?> </body> </html>
文件可能通过下列模式来打开:
模式 | 描述 |
---|---|
r | 只读。在文件的开头开始。 |
r+ | 读/写。在文件的开头开始。 |
w | 只写。打开并清空文件的内容;如果文件不存在,则创建新文件。 |
w+ | 读/写。打开并清空文件的内容;如果文件不存在,则创建新文件。 |
a | 追加。打开并向文件文件的末端进行写操作,如果文件不存在,则创建新文件。 |
a+ | 读/追加。通过向文件末端写内容,来保持文件内容。 |
x | 只写。创建新文件。如果文件以存在,则返回 FALSE。 |
x+ |
读/写。创建新文件。如果文件已存在,则返回 FALSE 和一个错误。 注释:如果 fopen() 无法打开指定文件,则返回 0 (false)。 |
例子
如果 fopen() 不能打开指定的文件,下面的例子会生成一段消息:
<html> <body> <?php $file=fopen("welcome.txt","r") or exit("Unable to open file!"); ?> </body> </html>
关闭文件
fclose() 函数用于关闭打开的文件。
<?php $file = fopen("test.txt","r"); //some code to be executed fclose($file); ?>
检测 End-of-file
feof() 函数检测是否已达到文件的末端 (EOF)。
在循环遍历未知长度的数据时,feof() 函数很有用。
注释:在 w 、a 以及 x 模式,您无法读取打开的文件!
if (feof($file)) echo "End of file";
逐行读取文件
fgets() 函数用于从文件中逐行读取文件。
注释:在调用该函数之后,文件指针会移动到下一行。
例子
下面的例子逐行读取文件,直到文件末端为止:
<?php $file = fopen("welcome.txt", "r") or exit("Unable to open file!"); //Output a line of the file until the end is reached while(!feof($file)) { echo fgets($file). "<br />"; } fclose($file); ?>
逐字符读取文件
fgetc() 函数用于从文件逐字符地读取文件。
注释:在调用该函数之后,文件指针会移动到下一个字符。
例子
下面的例子逐字符地读取文件,直到文件末端为止:
<?php $file=fopen("welcome.txt","r") or exit("Unable to open file!"); while (!feof($file)) { echo fgetc($file); } fclose($file); ?>
PHP Filesystem 参考手册
如需完整的 PHP 文件系统参考手册
PHP Filesystem 简介
Filesystem 函数允许您访问和操作文件系统。
安装
Filesystem 函数是 PHP 核心的组成部分。无需安装即可使用这些函数。
Runtime 配置
文件系统函数的行为受到 php.ini 中设置的影响。
文件系统配置选项:
名称 | 默认 | 描述 | 可改变 |
---|---|---|---|
allow_url_fopen | "1" |
本选项激活了 URL 形式的 fopen 封装协议使得可以访问 URL 对象例如文件。默认的封装协议提供用 ftp 和 http 协议来访问远程文件,一些扩展库例如 zlib 可能会注册更多的封装协议。 (PHP 4.0.4 版以后可用。) |
PHP_INI_SYSTEM |
user_agent | NULL |
定义 PHP 发送的 User-Agent。 (PHP 4.3.0 版以后可用。) |
PHP_INI_ALL |
default_socket_timeout | "60" |
基于 socket 的流的默认超时时间(秒)。 (PHP 4.3.0 版以后可用。) |
PHP_INI_ALL |
from | "" | 定义匿名 ftp 的密码(您的 email 地址)。 | PHP_INI_ALL |
auto_detect_line_endings | "0" |
当设为 On 时,PHP 将检查通过 fgets() 和 file() 取得的数据中的行结束符号是符合 Unix,MS-DOS,还是 Macintosh 的习惯。 这使得 PHP 可以和 Macintosh 系统交互操作,但是默认值是 Off,因为在检测第一行的 EOL 习惯时会有很小的性能损失,而且在 Unix 系统下使用回车符号作为项目分隔符的人们会遭遇向下不兼容的行为。 (PHP 4.3.0 版以后可用。) |
PHP_INI_ALL |
Unix / Windows 兼容性
当在 Unix 平台上规定路径时,正斜杠 (/) 用作目录分隔符。而在 Windows 平台上,正斜杠 (/) 和反斜杠 (\) 均可使用。
PHP Filesystem 函数
PHP:指示支持该函数的最早的 PHP 版本。
函数 | 描述 | 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 |
PHP Filesystem 常量
PHP:指示支持该常量的最早的 PHP 版本。
常量 | 描述 | PHP |
---|---|---|
GLOB_BRACE | ||
GLOB_ONLYDIR | ||
GLOB_MARK | ||
GLOB_NOSORT | ||
GLOB_NOCHECK | ||
GLOB_NOESCAPE | ||
PATHINFO_DIRNAME | ||
PATHINFO_BASENAME | ||
PATHINFO_EXTENSION | ||
FILE_USE_INCLUDE_PATH | ||
FILE_APPEND | ||
FILE_IGNORE_NEW_LINES | ||
FILE_SKIP_EMPTY_LINES |