概述
文件编程是指通过PHP代码对文件夹/文件,根据需求进行增删改查的操作。
分类:目录操作,文件操作
文件夹操作
1、新增文件夹操作:mkdir(路径/文件目录名) ,前面最好加@错误抑制符
2、删除文件夹:rmdir(路径/文件目录名)
删除文件夹要求目标文件夹为空,下面没有任何文件,否则报错
3、修改文件夹:rename(‘旧名字’,‘新名字’)
4、读取文件夹:
- 自动获取文件夹所有文件名 scandir(路径),返回数组
<?php
$dir_info=scandir('C:/Server/Apache24');
foreach ($dir_info as $key => $value) {
echo $value . '<br/>';
}
?>
- 手动操作 opendir(路径)得到资源,然后通过readdir(路径)进行手动访问(指针操作,访问一下移动一下),最好通过closedir关闭资源
//读取前5个文件名操作
<?php
$dir_r=opendir('C:/Server/Apache24'); // 打开资源
if($dir_r) {
for($i=0;$i<5;$i++){
$filename=readdir($dir_r);
if($filename===FALSE) break;
echo $filename . '<br/>';
}
}
closedir($dir_r); //关闭资源
?>
文件夹的操作通常有不可知性,通常需要系统函数判断路径的有效性
- is_dir(目录):判断是否是路径
- getcwd():获取当前工作路径
- rewinddir(目录资源):将opendir打开的资源重新指向第一个
- chdir(目录):修改当前工作路径
文件操作
不仅仅是对文件进行增删改查,还涉及到文件内容的增删改查。
1、新建文件:fopen(文件名、操作模式)
<?php
$f1=@fopen('hello.html','rb') or die('文件不存在');
$f2=@fopen('hello.html','w+b'); //加b是二进制模式,为了安全
fclose($f1); // 释放资源
fclose($f2);
?>
2、删除文件
unlink(路径文件名)
3、修改文件
fwrite(文件资源,字符串内容)
<?php
$f=@fopen('hello.html','wb') or die('文件打开失败');
if($f) {
@fwrite($f,‘<h1>hello world</h1>’) or die('文件写入失败');
fclose($f);
}
?>
也可以使用rename()来修改文件名
4、读取文件
fread(文件资源,读取长度)
<?php
$f=@fopen('hello.php'.'r');
while(!feof($f)){
echo fread($f,1024);
}
fclose($f);
?>
一次性或者全部操作文件,开发当中常用这种方式
- file_get_contents(文件路径)
- file_put_contents(文件路径,内容字符串[,写入方式])
<?php
$file=file_get_contents('hello.html');
$web=file_get_contents('http://www.taobao.com/index.php');
file_put_contents('hey.html',$file);
file_put_contents('hey.html','hello world',FILE_APPEND);
?>
文件操作相关常用函数
- file(文件路径):将整个文件以行为单位读取,返回一个数组
- fgetc(文件资源):一次读取一个字符
- fgets(文件资源):一次读取一行
- file_exists(文件路径):判定一个文件或者目录是否存在
- fseek(文件资源,指针位置):谁定fopen打开的资源的指针位置
- fileatime(文件路径):获取文件最后访问时间
- filemtime(文件路径):获取文件最后修改时间
- filesize(文件路径):获取文件大小
递归算法(递归遍历文件夹)
关于递归算法:
- 递归点:就是碰到的问题和当前函数解决的问题一样
- 递归出口:就是函数调用要有尽头,什么时候函数能够不再调用自己
<?php
function() myscandir($dir) {
is_dir($dir) or die('当前不是一个目录');
$files=scandir($dir);
foreach($files as $file) {
echo $file,'<br/>';
if($file=='.'|| $file=='..') continue; //过滤系统默认的空文件夹
$tmp_dir=$dir . '/' .$file;
if(is_dir($tmp_dir)){
myscandir($tmp_dir);
}
}
}
?>