文件处理:目录操作框架搭建之日志功能
<?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命令
*/
                    
                
                
            
        
浙公网安备 33010602011771号