主要内容:

目录操作:打开、读取、关闭、创建、重命名、删除

文件操作:打开、读、写、关闭、重命名、删除

信息获取函数 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

1file_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/>";

}

}

因此如果一个目录非空,该如何删除