文件处理:目录操作框架搭建之日志功能

<?php
/****
燕十八 公益PHP讲堂

论 坛: http://www.zixue.it
微 博: http://weibo.com/Yshiba
YY频道: 88354001
****/


/***
====笔记部分====
把excel导入数据库的方法
excel->csv->文件处理
***/
echo '<pre>';

$file = 'score.csv';
$fh = fopen($file,'rb');


/*
思路1:每次读一行,
每一行的内容再逗号拆成数组


while(!feof($fh)) {
$row = fgets($fh);
print_r(explode(',',$row));
}
*/

// 这个函数已经封装了csv文件相关规范.

while(!feof($fh)) {
$row = fgetcsv($fh);
print_r($row);
}


/***
有一堆小文件
a.txt
b.txt
c.txt

帮我检测,哪个文件有 fuck这个单词,
或者<10个字节文件
就删掉
***/

 

<?php
/****
燕十八 公益PHP讲堂

论 坛: http://www.zixue.it
微 博: http://weibo.com/Yshiba
YY频道: 88354001
****/


/***
====笔记部分====
批量处理文件内容
把小于10字节的文件,和含有fuck的文件删除掉

思路:
循环文件名
判断大小 filesize 如果<10,删.
如果不小于,读内容,判断是否有f**k单词,
如果有, 用unlink来删除.
***/

/*
foreach(array('a.txt','b.txt','c.txt','d.txt') as $v) {
$file = './article/' . $v;

// 判断大小
if(filesize($file) < 10) {
unlink($file);
echo $file,'小于10字节被删了<br />';
continue;
}

// 大于10字节,就判断内容
$cont = file_get_contents($file);

if(stripos($cont,'fuck') !== false) {
unlink($file);
echo $file,'有文明用语,被删了<br />';
}
}
*/

/**
如果这个目录有很多文件
想把一个目录下的文件 都打印出来
a.txt
b.txt
j.exe
japan.avi
aa.bmp
**/


// 匹配文件,把txt后缀的文件找出来,返回数组
print_r(glob('./article/*.txt'));

 

<?php
/****
燕十八 公益PHP讲堂

论 坛: http://www.zixue.it
微 博: http://weibo.com/Yshiba
YY频道: 88354001
****/


/***
====笔记部分====
目录操作
opendir 打开目录
readdir 读取目录
mkdir 创建目录
rmdir 删除目录
closedir 关闭目录句柄
is_dir 判断是否为目录

***/


$path = './misc';


/*
opendir 打开目录,返回资源句柄
*/
$dh = opendir($path); // $dh是句柄


/*
echo readdir($dh),'<br />'; //?? .
echo readdir($dh),'<br />'; //?? ..
echo readdir($dh),'<br />'; //??
echo readdir($dh),'<br />'; //??


.
.. 是虚拟的目录,分别代表 当前目录 和 上一级目录
*/


while(($filename = readdir($dh)) !== false) {
echo $filename;
if(is_dir('./misc/' . $filename)) {
echo '是目录';
}

echo '<br />';
}

closedir($dh);

 

<?php
/****
燕十八 公益PHP讲堂

论 坛: http://www.zixue.it
微 博: http://weibo.com/Yshiba
YY频道: 88354001
****/

 


// 创建和删除目录
/*
这个例子中,第一次创建目录成功,第二次失败
因为 目录已经存在了

foreach(array('a','b','c','d') as $v) {
$path = './misc/' . $v;
if(mkdir($path)) {
echo $path,'创建成功';
} else {
echo $path,'创建失败';
}

echo '<br />';
}
*/


// 先判断一下比较稳妥,如下
/*
foreach(array('a','b','c','d') as $v) {
$path = './misc/' . $v;

if(file_exists($path) && is_dir($path)) {
echo $path,'已经存在<br />';
continue;
}

if(mkdir($path)) {
echo $path,'创建成功';
} else {
echo $path,'创建失败';
}


echo '<br />';
}
*/


foreach(array('a','c','e') 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 />';
}
}


/*
注意 rmdir只能删非空目录.
思考: 如果一个目录非空,该如何删除?

 

第2:
一个目录下有众多子目录/子目录 ,及/子文件
如何把目录下所有的子目录/子目录
子文件层次打印出来

比如
./a
./mp3/hongkong/七里香.mp3
./movie/十月围城.mkv
b.txt
如果打印出目录下的层次结构(即 子孙内容全打印出来)

作业:自己写一个函数,仿tree命令
*/

 

posted on 2012-11-26 17:19  besile  阅读(203)  评论(0)    收藏  举报