

第13讲 目录概述,文件的打开关闭,读取写入,复制删除重命名,获取大小日期,目录的新建,打开,浏览,删除
13.1 概述
13.2 文件处理
1)打开文件
resource fopen(string filename, string mode [, bool use_include_path)
参数filename为要打开的文件名(包含路径,可是绝对或相对路径)
参数mode为打开方式
参数use_include_path可选,为配置文件php.ini中的参数项,其值是个路径,要在这个路径下打开文件时将其值设为1或true
2)关闭文件
bool fclose(resource handle);
用以将参数handle指向的文件关闭,成功返回true,否则返回false
3)从文件读数据,可读一个字符或一行字串或整个文件,或任意长度
4)readfile()函数,读入一个文件并写入到输出缓冲,出错返回false
int readfile(string filename)
//用该函数不需要打开/关闭文件,不需要echo/print等输出语句,直接写出文件路径即可
例:readfile('tm.txt'); //读取当前目录下的tm.txt
5)file()函数,也可读整个文件的内容,只是该函数是将文件内容按行放到数组,包括换行符,失败返回false
array file(string filename)
例:$f_arr = file('tm.txt');
foreach($f_arr as $cont){
echo $cont."<BR>";
}
6)file_get_contents()函数 适用于二进制文件,是将一个二进制文件读入到一个字串中的首选方式
string file_get_contents(string filename[, int offset[, int maxlen]])
//从文件filename中的偏移offset处开始读取长度为maxlen的内容,如失败返回false
例:$f_chr = file_get_contents('tm.txt');
echo $f_chr;
7)读取一行数据的fgets()和fgetss()
a. fgets()函数,用于读取一行数据
语法:string fgets(int handle [, int length])
例:$fopen = fopen('fun.php','rb');
while(!feof($fopen)){
echo fgets($fopen);
}
fclose($fopen);
b. fgetss()函数,fgets()的变体,用于读取一行数据,同时会过滤掉所读内容中的html和php标记
string fgetss(resource handel [, int length [, string allowable_tags]]
//该函数会支掉所读内容中的任何html和php标记
//参数allowable_tags用来控制那些标记保留
例:$fopen = fopen('fun.php','rb');
while(!feof($fopen)){
echo fgetss($fopen);
}
fclose($fopen);
c. fgetc()函数,返回一个字符,
string fgetss(resource handel) //返回handle指向文件中的一个字符,碰到eof则返回false
8)使用fwrite()和file_put_contents()函数写入数据
a. fwrite()函数
语法:int fwrite(resource handel, string string [, int length])
//把字串string写入到指针handle指向的文件
//length可选,当写入length长度后停止写入
b. file_put_contents()函数
语法:int file_put_contents(string filename, string data [, int flags])
//PHP5新加函数,相当于依次调用,fopen(),fwrite(),fclose()一样的
例:$filepath = "05.txt";
$str = "aabbcceeffgg<br>";
echo "用fwrite函数写入文件:";
$fopen = fopen($filepath,'wb') or die('文件不存在');
fwrite($fopen,$str);
fclose($fopen);
readfile($filepath);
echo "<p>用file_put_contents函数写入文件";
file_put_contents($filepath,$str);
readfile($filepath);
9)操作文件,复制,重命名,查看修改日期,删除,获取大小等
a. 复制 bool copy(string path1,string path2) //将文件从path1复制到path2,成功返回true,失败返回false
b. 重命名 bool rename(;string,filename1, string filename2) //把name1命名为name2
c. 删除 bool unlink(string filename)
d. 返回最后访问时间 bool fileatime(string filename)
e. 返回最后修改时间 bool filemtime(string filename)
f. 得到文件的大小 bool filesize(string filename)
10)返回文件路径信息的数组函数
array pathinfo(string name [, int options])
//返回文件路径信息,包含目录,文件名,扩展名等,dirname,basename,extension
string realpath(stringfilename) //返回文件filename的绝对路径
array stat(string filename) //返回一个数组,包含文件大小,最后修改时间等
11)除file(),readfile()等少数函数外,其他操作要先用fopen打开文件,最后用fclose关闭文件
filesize,filemtime等不需要打开文件
13.3 目录处理相关函数,要浏览目录下文件,要经过打开目录,浏览目录,关闭目录三步
注:目录是特殊的文件,对文件操作的函数多数适用于目录,如重命名等
1)用opendir()函数打开目录
resource opendir(string path)
//参数path为目录路径
//执行函数后返回目录的指针,出错则返回false并产生个E_WARNING级别的错误信息,可在函数前加@禁止输出错误信息
2)用closedir()函数关闭目录
void closedir(resource handle)
//参数handle为opendir执行后返回的目录指针
3)用scandir浏览目录中文件
array scandir(string directory [,int sorting_order]
//函数执行后返回directory中所有文件和目录的数组
//可选参数sorting_order用以指定排序顺序,默认按字母升序排序
4)用mkdir()函数新建目录
bool mkdir(string pathname)
5)用rmdir()函数删除目录
bool rmdir(string pathname)
6)用getcwd()函数取得当前工作目录
string getcwd(void)
7)用chdir()函数改变当前目录
bool chdir(string directory)
8)其它函数
float disk_free_space(string directory) //返回目录可用空间字节
float disk_total_space(string directory) //返回目录总空间
string readdir(resource handle) //返回目录中下一个文件的文件名
void rewinddir(resource handdel) //将指定目录重新指到目录的开头