总算来到我们最关心的部分了,也就是 f 相关函数的操作。基本上大部分的文件操作都是以今天学习的这些内容为基础的,话不多说,我们就一个一个的来学习学习吧。
文件读取
文件的读取其实非常简单,fopen() 打开句柄,fread() 读取内容,fclose() 关闭句柄,一套流程下来操作就完成了。
$f = fopen('./test.txt', 'r+');
while (!feof($f)) {
$contents = fread($f, 4);
echo $contents, PHP_EOL;
}
// Rain
// is
// fall
// ing
// all
// arou
// nd,
// It f
// alls
// on
// ……
// ……
fopen() 函数的第二个参数是我们可以操作的权限。
模式 | 说明 |
---|---|
'r' | 只读方式打开,将文件指针指向文件头。 |
'r+' | 读写方式打开,将文件指针指向文件头。 |
'w' | 写入方式打开,将文件指针指向文件头并将文件大小截为零。如果文件不存在则尝试创建之。 |
'w+' | 读写方式打开,将文件指针指向文件头并将文件大小截为零。如果文件不存在则尝试创建之。 |
'a' | 写入方式打开,将文件指针指向文件末尾。如果文件不存在则尝试创建之。 |
'a+' | 读写方式打开,将文件指针指向文件末尾。如果文件不存在则尝试创建之。 |
'x' | 创建并以写入方式打开,将文件指针指向文件头。如果文件已存在,则 fopen() 调用失败并返回 FALSE,并生成一条 E_WARNING 级别的错误信息。如果文件不存在则尝试创建之。这和给 底层的 open(2) 系统调用指定 O_EXCL |
'x+' | 创建并以读写方式打开,其他的行为和 'x' 一样。 |
'c' | 只打开文件进行写入。如果文件不存在,则创建该文件。如果它存在,它既不会被截断(与“w”相反),也不会导致对该函数的调用失败(与“x”一样) |
'c+' | 打开文件进行读写;否则它的行为与“c”相同。 |
fread() 函数的第二个参数是每次要读取的字节数,可以看到在测试代码中我们是以 4 个字节为单位进行读取的,所以文件内容都是按 4 个字节分开的一行一行的输出的。feof() 用于判断当前文件的游标指针是否已经移动到末尾了。
游标操作
既然说到游标,那么我们就来看看游标相关的操作。
while (!feof($f)) {
$contents = fread($f, 1024);
echo $contents, PHP_EOL;
}
//
rewind($f);
while (!feof($f)) {
$contents = fread($f, 1024);
echo $contents, PHP_EOL;
}
// Rain is falling all around,
// It falls on fi