资源(resource)这个词常常与可以发起输入或输出流的实体联系起来。标准输入或输
出、文件和网络套接字都是资源的例子。因此你会经常看到本节所介绍的很多函数都是在资
源处理的上下文中讨论的,而不是文件处理,这本身是因为所有这些函数都能够与前面所述
的资源结合使用。但是,由于这些函数与文件结合使用是应用中最常见的。
将数据写入一个文件,有3 个步骤:
1. 打开这个文件。如果文件不存在,需要先创建它。
2. 将数据写入这个文件。
3. 关闭这个文件
同样,从一个文件中读出数据,也有3 个步骤:
1. 打开这个文件。如果这个文件不能打开,就应该意识到这一点并且正确地退出。
2. 从文件中读出数据。
3. 关闭这个文件。
打开文件
要在PHP 中打开一个文件,可以使用fopen()函数。当打开一个文件的时候,还需要指
定如何使用它。也就是,文件模式。
选择文件模式:当打开一个文件的时候,有3 中选择:
1. 打开文件为了只读、只写或者读和写。
2. 如果要写一个文件,你可能希望覆盖所有已有的文件内容,或者仅仅将新数据追加到
文件末尾。如果该文件已经存在,也可以终止程序的执行而不是覆盖该文件。
3. 如果希望在一个区分了二进制方式和纯文本方式的系统上写一个文件,还必须制定采
用的方式。
函数fopen()支持以上3 中方式的组合。
$fp=fopen(文件路径, 文件模式, [是否在incloude_path 中搜索一个文件],[允许文件名
以协议名称开始(如http://)] )
fopen()函数的文件模式总
r
r+
w
w+
x
x+
a
a+
b
t
除了打开一个本地文件进行读写操作之外,也可以使用fopen()函数通过FTP、HTTP或其他协议来打开文件。在php.ini文件中,可以通过关闭allow_url_fopen指令来禁用这个功能。如果在使用该函数打开一个远程文件时遇到问题,请检查php.ini文件。
写入 一般用“w”或者"ab" 这个比较通用
--------------------------------------------------------------------------------------------------
如果fopen()函数调用失败,函数将返回false。可以用一种对于用户友好的方式来处理
这个错误,可以通过抑制PHP 的错误信息并且根据自己的方式给出错误信息。
@$fp=fopen("file.txt",'ab'); //ab 追加并且二进制方式
写文件
在PHP 中写文件相对比较简单。可以使用fwrite() 或者fputs() 函数。我们可以使用如
下方式调用fwrite();
fwrite($fp, $outputstring, [int length]); //第三个可选参数为最大字符数
这个函数告诉PHP 将保存在$outputstring 中的字符串写入到$fp 指向的文件中。
fwrite()函数的一个新的替换函数是file_put_contects().可以通过PHP的内置strlen()函数获得字符串的长度:
fwrite($fp, $outputstring, strlen($outputstring));
当然还有一种不需要资源句柄的写入方法:file_put_contents()。
关闭文件
当文件使用完毕后,应该将其关闭。应该调用fclose()函数:
fclose($fp);
读出文件
查看一个文件的大小:filesize();
删除一个文件:unlink();
在文件中定位:rewind()、fseek()和ftell();
rewind()函数可以将文件指针复位到文件的开始。
ftell()函数可以以字节为单位报告文件指针当前在文件中的位置。
fseek()函数可以将文件指针fp 从whence 位置移动offset 字节。
$fp = fopen("file.txt","r");
fgetc():读出一个字符,并将指针移到下一个字符。
fgets():读出一行字符,可以指定一行显示的长度。
fgetss():从文件指针中读取一行并过滤掉HTML 标记。
fread():读取定量的字符。
fpassthru(): 输出文件指针处的所有剩余数据。
file():将整个文件读入数组中,以行分组。
readfile():读入一个文件并写入到输出缓冲。
file_get_contents():将整个文件读入一个字符串。
while (!feof($fp)) {
echo fgetc($fp);
}
判断读完文件函数:feof() ,返回true ,!feof() 返回false;
查看文件是否存在:file_exists();
if (file_exists("file.txt")) {
//..
}
else {
//...
}
目录句柄操作
opendir():打开路径指定的目录流。
closedir():关闭目录流。
readdir():返回目录中的各个元素。
$dir = opendir('C:\AppServ\www\Basic5');
while (!!$file = readdir($dir)) {
echo $file.'<br />';
}
closedir($dir);
scandir():将目录读入数组。
print_r(scandir('C:\AppServ\www\Basic5'));
rmdir():删除指定的目录。
rmdir('C:\AppServ\www\Basic5\123');
rename():重命名文件。
rename('Demo1.php','Demo01.php');