主要内容: 目录操作:打开、读取、关闭、创建、重命名、删除 文件操作:打开、读、写、关闭、重命名、删除 信息获取函数 filemtime() filesize() file_exists() is_dir() |
一、读取文件内容,赋值给一个字符串
1.
file_get_contents — 获取一个文件或网络资源的内容,保存为一个字符串
file_put_contents — 将一个字符串写入文件
$file = "./a.txt"; $string = file_get_contents($file); $url="http://www.baidu.com"; echo file_get_contents($url); |
file_get_contents是读取文件或者网络资源的内容,比较快捷,封装了打开,关闭操作
如果处理上百M 的文件,慎重使用
如果获取的文件不存在,将报warning
将读出的内容,写入到文件,也是快捷函数,封装了打开,写入,关闭的细节
$file = "./a.txt"; $string = file_get_contents($file); file_put_contents("./b.txt", $string); |
如果指定的文件不存在,则自动创建
最简单的小偷程序
<?php $url = ""; $html = file_get_contents($url); if(file_put_contents('news.html', $html)){ echo "获取成功"; } else{ echo "获取失败"; } ?> |
2
$handle = fopen($file,’r’) 打开一个文件,返回一个句柄资源
'r' | 只读方式打开,将文件指针指向文件头。 |
'r+' | 读写方式打开,将文件指针指向文件头。 |
'w' | 写入方式打开,将文件指针指向文件头并将文件大小截为零。如果文件不存在则尝试创建之。 |
'w+' | 读写方式打开,将文件指针指向文件头并将文件大小截为零。如果文件不存在则尝试创建之。 |
'a' | 写入方式打开,将文件指针指向文件末尾。如果文件不存在则尝试创建之。 |
'a+' | 读写方式打开,将文件指针指向文件末尾。如果文件不存在则尝试创建之。 |
$content = fread($handle,$length) 从文件指针$handle读取文件,读取长度为$length,返回所读取的字符串
$length = fwrite($handle,$string[,$length]) 写入文件,返回写入的字符数,出错返回false
成功与否,与打开的方式有关
从文件头,写入时,覆盖相等字节的字符
fclose($handle) 关闭一个已经打开的文件指针,成功返回true,失败返回false
w:写入模式,fread()读不了,并把文件大小截为0,即文件被清空,文件指针停于开头处 a模式:追加模式打开,能写,并把文件指针停在文件的最后 |
问题:用文件操作函数,处理客户名单,每行一个
换行符 :win \r\n unix \n mac \r
1用file_get_contents
$file = "./custom.txt"; $cont = file_get_contents($file); print_r(explode("\n", $cont)); |
2.
fgets — 从文件指针中读取一行
//打开每次读一行 //fgets()函数,每次读一行 //模式采用rb表示以二进制读取 $file = "./custom.txt"; $handle = fopen($file, "rb"); echo fgets($handle); echo fgets($handle); echo fgets($handle); //文件指针一直在移动 //使用feof,end of file判断是否到文件结尾 //feof — 测试文件指针是否到了文件结束的位置 while (!feof($handle)) { echo fgets($handle)."<br/>"; } |
3.
file — 把整个文件读入一个数组中
//file()函数,按行拆成数组,返回数组 //和file_get_contents相同 //如一次读入较多数据,大文件慎用 $file = "./custom.txt"; $arr = file($file); print_r($arr); |
二 判断文件是否存在,获取文件的创建时间
/**** 判断文件是否存在 判断文件的创建时间,修改时间 filemtime返回值为时间戳 ****/ $file = "./a.txt"; if (file_exists($file)) { echo "上次修改时间是:".date("y-m-d h:i:s",filemtime($file)) ; }else{ echo “文件不存在”; } /* 在smarty中,控制文件缓存时间 */ |
三 文件操作导入csv文件
1.操作excel,有开源的phpExcel开源的类
2. 如果是简单的导入到数据库,可以先转化为csv文件,
Csv是一种简单的用逗号分隔的文件格式
$file = "score.csv"; $hanle = fopen($file, "rb"); /*//1.每次读取一行,每一行用逗号拆成数组 while (!feof($hanle)) { $row = fgets($hanle); print_r(explode(",", $row)); }*/ //2.从文件指针读取csv并解析 //fgetcsv(handle)函数,已经封装了csv的文件相关规范 while (!feof($hanle)) { $row = fgetcsv($hanle); print_r($row); } |
四 批量处理文件内容
在一堆文件中, a.txt b.txt c.txt 删除包含非法词语fuck的文件或者小于10个字节的文件 思路:循环文件名->判断大小->读内容->判断是否有非法词语 filesize()函数,读取文件大小 使用unlink()函数,删除文件 rmdir()删除目录 ****/ foreach(array("a.txt","b.txt","c.txt","d.txt") as $v){ $file = "./article/".$v; if (filesize($file)<10) { unlink($file); echo $file."大小不足10字节已删除"; continue; } $cont = file_get_contents($file); if (stripos($cont, "fuck") !==false) { unlink($file); echo $file."有不文明用语,已被删除"; } } |
目录操作函数:
目录下有很多的文件, a.txt b.txt c.txt 匹配文件:glob(pattern)寻找与模式匹配的文件路径 ****/ //print_r(glob("./article/*.txt")); //* 是通配符 |
想把一个目录下文件都打印出来
打开目录:fopen()
读取目录:readdir()
创建目录:mkdir()
删除目录:rmdir()
关闭目录句柄:closedir()
判断是否是目录:is_dir()
$path = "./misc"; $handle = opendir($path); // 返回的是资源句柄 /*echo readdir($handle);//读取目录,目录指针后移 echo readdir($handle); echo readdir($handle); */ /* . 当前目录别名,是虚拟的目录 .. 上级目录别名 可以使用while循环,读取所有目录 */ while (($filename = readdir($handle))!== false) { echo $filename."<br/>"; if (is_dir($filename)) { echo "是目录"; } } closedir($handle); |
创建目录
foreach(array("1","2","3","4") as $v){ $path ="./misc/".$v; if (!file_exists($path)) {//创建目录,先判断目录是否已经存在 if (mkdir($path)) { echo $path."创建成功"; } else { echo $path."创建失败"; } } else { echo $path."目录已经存在"; } }*/ |
删除目录:不能删除非空目录,只能删除非空目录
foreach(array("a","1","2") as $v){ $path ="./misc/".$v; if (file_exists($path) && is_dir($path)) { if (rmdir($path)) { echo $path."删除成功<br/>"; } else { echo $path."删除失败<br/>"; } } else { echo $path."目录不存在<br/>"; } } |
因此如果一个目录非空,该如何删除
转载于:https://blog.51cto.com/duguodong/1386382