免费做logo设计的网站,茂名住房和城乡建设局网站,外贸网站建设公司,通过网站提升公司形象文章目录 文件编程的必要性目录操作其它目录操作递归遍历目录PHP5常见文件操作函数PHP4常见文件操作函数其他文件操作函数 文件编程的必要性
文件编程指利用PHP代码针对文件#xff08;文件夹#xff09;进行增删改查操作。
在实际开发项目中#xff0c;会有很多内容… 文章目录 文件编程的必要性目录操作其它目录操作递归遍历目录PHP5常见文件操作函数PHP4常见文件操作函数其他文件操作函数 文件编程的必要性
文件编程指利用PHP代码针对文件文件夹进行增删改查操作。
在实际开发项目中会有很多内容文件上传、配置文件等具有很多不确定性不能在一开始就手动的创建需要根据实际需求和数据本身来进行管理这个时候就可以使用PHP文件编程来实现代码批量控制和其他操作。 文件操作的分类 1 目录操作文件夹用来存放文件的特殊文件
2 文件操作用来存放内容
目录操作 创建目录 1.mkdir(目录名)创建成功返回true创建失败返回false
2.创建目录可以结合错误抑制符使用。因为有些操作为的就是得到一个想要的结果如果结果本身就存在那么可以忽略得到过程的错误抑制错误。
例如上面想要创建的文件夹本身就存在
$res mkdir(dir);删除目录 rmdir(指定文件夹路径)移出文件夹
rmdir(dir);读取目录 读取方式将文件夹路径按照资源方式打开
1.opendir(目录名)打开资源返回一个路径资源包含指定目录下的所有文件文件夹
2.readdir(路径资源)从资源中读取指针所在位置的文件名字然后指针下移直到指针移出资源
如果想要读取所有内容那么此时可以使用while或者for进行循环操作
$r opendir(dir);
while($file readdir($r))
{echo $file,br/;
}关闭目录 closedir(路径资源) 其它目录操作
1dirname(路径)得到的是路径的上一层路径
作用可以得到路径的前缀
$dir1 D:/Mango/Lemon/Test.php;
$dir2 D:/Mango/Lemon/Test/test.php;
echo dirname($dir1), ,dirname($dir2);//D:/Mango/Lemon D:/Mango/Lemon/Test注意dirname只是根据字符串返回无论该路径在电脑上是否存在
2realPath(一个路径)如果文件存在返回该文件路径。如果文件不存在返回false
$dir1 Z:/1.md;
$dir2 Z:/2.md;
var_dump(realpath($dir1),realpath($dir2));//string(7) Z:\1.md bool(false)3is_dir(路径)判断指定路径是否是一个目录如果该路径不存在不是目录返回false
$dir1 D:/;
$dir2 D:/Mango/Lemon/Test/test.php;
var_dump(is_dir($dir1),is_dir($dir2));//bool(true) bool(false)4scandir(路径)封装版的opendirreaddirclosedir获取一个指定路径下的所有文件信息以数组形式返回
var_dump(scandir(dir));//array(3) { [0] string(1) . [1] string(2) .. [2] string(4) ddir }递归遍历目录
递归遍历目录指定一个目录的情况下将其下的所有文件和目录及其目录内部的所有内容都输出出来。 思路 设计一个能够遍历一层文件的函数function my_scandir($dir)
1.首先要判断$dir是否是目录如果不是目录直接终止
2.使用scandir读取dir目录下的所有内容文件子目录
3.遍历读取到的所有内容 此时需要构造文件路径因为遍历得到的结果只是文件的名字 并且需要排除.和..文件否则会导致死循环 找到递归点遍历得到的文件是目录应该调用当前函数调用自己判断构建好的路径是目录还是普通文件如果是目录则调用自身函数
4.找到递归出口遍历完这个文件夹之后发现没有任何子文件夹函数不再调用自己自带递归出口 问题如何显示层级关系 函数第一次运行遍历的结果是最外层目录内部调用一次说明进入一个子目录子目录再调用一次函数进入孙子目录如果能够在第一次调用的时候给个标记然后在进入的时候通过标记的变化来识别层级关系就可以达到目的该标记还能代表层次关系缩进
方法可以在函数当中多增加一个参数默认值为0标识最外层
递归调用函数的时候也需要使用该参数但是是属于当前层级的子层所以1
注意递归调用的时候是level1而不是level因为要回溯回来如果是就会导致level的值发生改变 根据层级来实现缩进 可以使用str_repeat函数作用是重复一个字符串多少次在这里我们的层级用空格来表示即可
str_repeat(nbsp;nbsp;,$level)) 重复两个空格level次 整体代码 //递归遍历目录
//参数1路径名 参数2当前层级,默认是0,表示最外层
function my_scandir($dir,$level 0)
{//1.首先判断该路径是否是一个目录,如果不是,直接结束if(!is_dir($dir))die($dir.br/); //die() 函数输出一条消息并退出当前脚本。//2.使用scandir函数获取当前路径下所有文件信息,以数组形式返回$file_array scandir($dir);//3.遍历路径下的所有内容foreach($file_array as $file){//$file代表的就是文件名/文件夹名//根据文件层级显示对应的空格数echo str_repeat(nbsp;nbsp;,$level),$file.br/;//排除.和.. 防止死递归if($file . || $file ..) continue;//因为$file只是文件名,所以要构造路径$file_dir $dir./.$file; //利用到了 .连接符//验证: echo $file_dir;//如果是目录,那么就递归if(is_dir($file_dir))my_scandir($file_dir,$level1);}
}
$dir dir;
my_scandir($dir);效果 PHP5常见文件操作函数
1file_get_contents(文件路径)获取指定文件的所有内容
如果路径不存在最好做安全处理 错误抑制
$file read.txt;
$content file_get_contents($file);
echo $content;//hello I am read.txt Mango Lemon2file_put_contents(文件路径内容)将指定内容写入到指定文件内如果当前路径下不存在指定的文件函数会自动创建如果路径不存在不会创建路径
返回值返回写入的字符串长度字节
$file read.txt;
// $content file_get_contents($file);
$test hello world;
$res file_put_contents($file,$test);echo $res;//11PHP4常见文件操作函数
PHP4中是将文件操作用资源形式处理不论是读还是写都依赖资源指针文件内容中指针所在位置
1fopen(文件路径打开模式)打开一个文件资源返回值资源指针要指定打开模式
2fread(资源指针长度)从打开的资源中读取指定长度的内容字节
3fwrite(资源指针内容)向打开的资源中写入指定的内容
4fclose(资源)关闭资源
$file_name read.txt;
$fp fopen($file_name,r);//以读方式打开
$content fread($fp,1024);
echo $content; //hello world hello world dwadaw dwadaw
fclose($fp);其他文件操作函数
1is_file()判断文件是否正确不识别路径
$filename example.txt;
if (is_file($filename)) {echo The file exists and is a regular file.;
} else {echo The file does not exist or is not a regular file.;
}2filesize()获取文件大小
$filename example.txt;
$filesize filesize($filename);
echo The size of the file is: . $filesize . bytes;3file_exists()判断文件是否存在识别路径
$filename example.txt;
if (file_exists($filename)) {echo The file exists.;
} else {echo The file does not exist.;
}4unlink()取消文件名字与磁盘地址的连接删除文件
$filename example.txt;
if (file_exists($filename)) {unlink($filename);echo File deleted successfully.;
} else {echo File does not exist, cannot delete.;
}5filemtime()获取文件最后一次修改的时间
$filename example.txt;
if (file_exists($filename)) {$lastModified filemtime($filename);echo Last modified: . date(Y-m-d H:i:s, $lastModified);
} else {echo File does not exist.;
}6fseek()设定fopen打开的文件的指针位置
$filename example.txt;
$fp fopen($filename, r);
fseek($fp, 50); // Set the pointer position to byte 50 from the beginning of the file
// Perform other operations here, like reading or writing
fclose($fp);7fgetc()一次获取一个字符
$filename example.txt;
$fp fopen($filename, r);
$char fgetc($fp); // Read one character from the file
echo The first character in the file is: . $char;
fclose($fp);8fgets()一次获取一个字符串默认行
$filename example.txt;
$fp fopen($filename, r);
$line fgets($fp); // Read one line from the file
echo The first line in the file is: . $line;
fclose($fp);
9file()读取整个文件类似file_get_contents区别是按行读取返回一个数组
$filename example.txt;
$lines file($filename); // Read the entire file into an array
foreach ($lines as $line) {echo $line . br;
}