文件读取/写入操作
fopen — 打开文件或者 URL
fopen ( string
$filename
, string$mode
[, bool$use_include_path
= false [, resource$context
]] ) : resource
模式 | 作用 |
---|---|
'r' | 只读方式打开,将文件指针指向文件头。 |
'r+' | 读写方式打开,将文件指针指向文件头。 |
'w' | 写入方式打开,将文件指针指向文件头并将文件大小截为零。如果文件不存在则尝试创建之。 |
'w+' | 读写方式打开,将文件指针指向文件头并将文件大小截为零。如果文件不存在则尝试创建之。 |
'a' | 写入方式打开,将文件指针指向文件末尾。如果文件不存在则尝试创建之。 |
'a+' | 读写方式打开,将文件指针指向文件末尾。如果文件不存在则尝试创建之。 |
'x' | 创建并以写入方式打开,将文件指针指向文件头。如果文件已存在,则 fopen() 调用失败并返回 FALSE,并生成一条 E_WARNING 级别的错误信息。如果文件不存在则尝试创建之。这和给 底层的 open(2) 系统调用指定 O_EXCL |
'x+' | 创建并以读写方式打开,其他的行为和 'x' 一样。 |
写入函数
fwrite — 写入文件(可安全用于二进制文件)
fwrite ( resource
$handle
, string$string
[, int$length
] ) : int
参数:
handle
文件系统指针,是典型地由 fopen() 创建的 resource(资源)。
string
The string that is to be written.
length
如果指定了 length
,当写入了 length
个字节或者写完了 string
以后,写入就会停止,视乎先碰到哪种情况。
注意如果给出了 length
参数,则 magic_quotes_runtime 配置选项将被忽略,而 string
中的斜线将不会被抽去。
fputs — fwrite() 的别名
读取函数
fread() : 读取文件(可安全用于二进制文件)
string fread ( resource $handle , int $length )
fgets() : 从文件指针中读取一行
string fgets ( resource $handle [, int $length ] )
fgetc() : 从文件指针中读取一个字符
string fgetc ( resource $handle )
关闭文件函数
fclose() 关闭一个已打开的文件指针
不需要fopen()打开的函数
- file_get_contents() : 将整个文件读入一个字符串
string file_get_contents ( string $filename [, bool $use_include_path = false [, resource $context [, int $offset = -1 [, int $maxlen ]]]] )
- file_put_contents() : 将一个字符串写入文件 , 和依次调用 fopen(),fwrite() 以及 fclose() 功能一样。
int file_put_contents ( string $filename , mixed $data [, int $flags = 0 [, resource $context ]] )
其他读取函数
- file() : 把整个文件读入一个数组中
array file ( string $filename [, int $flags = 0 [, resource $context ]] )
- readfile() : 读取文件并写入到输出缓冲。
int readfile ( string $filename [, bool $use_include_path = false [, resource $context ]] )
访问远程文件
开启allow_url_fopen
,HTTP协议连接只能使用只读,FTP协议可以使用只读或者只写
目录操作函数
名称相关
- basename() : 返回路径中的文件名部分
string basename ( string $path [, string $suffix ] )
1 index.html 2 index. 3 index 4 . 5 index.html 6 7
- dirname() : 返回路径中的目录部分
string dirname ( string $path )
返回 path 的父目录。 如果在
path
中没有斜线,则返回一个点('.'),表示当前目录。否则返回的是把path
中结尾的 /component(最后一个斜线以及后面部分)去掉之后的字符串。
<?php echo "1) " . dirname("/etc/passwd") . PHP_EOL; // 1) /etc echo "2) " . dirname("/etc/") . PHP_EOL; // 2) / (or on Windows) echo "3) " . dirname("."); // 3) . ?>
- pathinfo() : 返回一个关联数组包含有 path 的信息。返回关联数组还是字符串取决于 options。
mixed pathinfo ( string $path [, int $options = PATHINFO_DIRNAME | PATHINFO_BASENAME | PATHINFO_EXTENSION | PATHINFO_FILENAME ] )
输出
目录读取
- opendir() : 打开一个目录句柄,可用于之后的 closedir(),readdir() 和 rewinddir() 调用中。
resource opendir ( string $path [, resource $context ] )
- readdir() : 返回目录中下一个文件的文件名。文件名以在文件系统中的排序返回。
string readdir ([ resource $dir_handle ] )
- closedir()
- rewinddir() : 将 dir_handle 指定的目录流重置到目录的开头。
void rewinddir ( resource $dir_handle )
目录删除
- rmdir() : 尝试删除 dirname 所指定的目录。 该目录必须是空的,而且要有相应的权限。 失败时会产生一个 E_WARNING 级别的错误。
bool rmdir ( string $dirname [, resource $context ] )
目录创建
- mkdir() : 尝试新建一个由 pathname 指定的目录。
bool mkdir ( string $pathname [, int $mode = 0777 [, bool $recursive = false [, resource $context ]]] )
文件大小
- filesize()
目录大小
- disk_free_space()
- disk_total_space()
文件拷贝
- copy()
bool copy ( string $source , string $dest [, resource $context ] )
删除文件
- unlink() : 删除 filename。和 Unix C 的 unlink() 函数相似。 发生错误时会产生一个 E_WARNING 级别的错误。
bool unlink ( string $filename [, resource $context ] )
文件类型
- filetype() : 返回文件的类型。 可能的值有 fifo,char,dir,block,link,file 和 unknown。
重命名文件或目录
- rename()
bool rename ( string $oldname , string $newname [, resource $context ] )
文件截取
- ftruncate()
bool ftruncate ( resource $handle , int $size )
文件属性
- file_exists()
- is_readable()
- is_writeable()
- is_executable()
- filectime() : 取得文件的 inode 修改时间。 (状态改变时间change time)
- fileatime() : 取得文件的上次访问时间(access time)
- filemtime() : 取得文件修改时间(modify time)
文件锁
- flock()
文件指针
- ftell() : 返回由 handle 指定的文件指针的位置,也就是文件流中的偏移量。
int ftell ( resource $handle )
- fseek() : 在文件指针中定位
int fseek ( resource $handle , int $offset [, int $whence = SEEK_SET ] )
- rewind() : 将 handle 的文件位置指针设为文件流的开头。