(本文为个人学习过程的备忘录。内容持续更新)
打开文件 fopen()
$file = fopen("./file.txt", "r");
参数表
模式 | 描述 |
---|
r | 只读。从文件开头开始 | r+ | 读写。从文件开头开始 | w | 只写。打开并清空文件内容。文件不在则新建 | w+ | 读写。打开并清空文件内容。文件不在则新建 | a | 追加。打开文件并从末尾继续。文件不在则新建 | a+ | 读/追加。 | x | 只写。创建新文件。若文件已在,则返回false 和一个错误 | x+ | 读写。 |
返回数据
打开成功则返回文件指针。失败返回 false .
关闭文件 fclose()
fclose($file);
文件锁 flock()
函数原型
flock(resource $stream, int $operation, int &$would_block = null): bool
参数表
- 文件指针:已经打开的文件
- 操作(可通过位运算
或 多选)
操作 | 说明 |
---|
LOCK_SH | 获取共享锁(reader) | LOCK_EX | 获取独占锁(writer) | LOCK_UN | 解锁 | LOCK_NB | should not block |
返回数据
bool: 是否成功。上锁失败,则返回false.
样例
$file = fopen(...);
if (flock($file, LOCK_EX)) {
...;
flock($file, LOCK_UN);
} else {
...;
}
if (flock($file, LOCK_EX | LOCK_NB)) {
...;
flock($file, LOCK_UN);
} else {
...;
}
结尾判断 feof()
函数原型
feof(resource $stream): bool
读取字符 fgetc()
函数原型
fgetc(resource $stream): string|false
返回数据
包含单个字符的string,或false. 对false做判断时应注意数据类型相同(=== , !== ).
读取字符串 fgets()
函数原型
fgets(resource $stream, ?int $length = null): string|false
二进制读取 fread()
函数原型
fread(resource $stream, int $length): string|false
停止条件
以下条件任意一条满足则停止:
- 读入长度已经达到设定的长度
length - 已经达到文件结尾(EOF)
- a packet becomes available or the socket timeout occurs (for network streams)
- if the stream is read buffered and it does not represent a plain file, at most one read of up to a number of bytes equal to the chunk size (usually 8192) is made; depending on the previously buffered data, the size of the returned data may be larger than the chunk size.
(后两条原文摘自 php.net)
二进制写入 fwrite()
函数原型
fwrite(resource $stream, string $data, ?int $length = null): int|false
停止条件
已经达到设定的长度length ,或已经达到数据data 结尾。
返回数据
int: 成功写入的字节数 false: 出现异常
|