PHP小白到大牛直播班+Linux服务器(前30名)
博主信息
Lon
博文
33
粉丝
0
评论
0
访问量
17279
积分:0
P豆:70

PHP 目录与文件操作常用函数

2021年10月26日 20:08:16阅读数:446博客 / Lon/ PHP

PHP 目录与文件操作常用函数

一、目录操作

1.创建一个新目录 mkdir()

第一个参数;指定目录的路径
第二个参数:默认的 mode 是 0777,意味着最大可能的访问权。$mode在windows下被忽略。 注意$mode的值为八进制
第三个参数:如果指定的路径的上级目录不存在,则也会递归创建。

  1. $dirname = "./public/index";
  2. mkdir($dirname,0777,true);

2.判断是否是一个目录 is_dir()

  1. $dirname = "./public/index";
  2. if(is_dir($dirname)){
  3. echo "{$dirname}是目录<br>";
  4. }else{
  5. echo "{$dirname}是一个文件<br>";
  6. }

3.判断目录或文件是否存在 file_exists()

  1. if(file_exists($dirname)){
  2. echo "{$dirname}文件存在<br>";
  3. if(is_dir($dirname)){
  4. echo "{$dirname}是目录<br>";
  5. }else{
  6. echo "{$dirname}是一个文件<br>";
  7. }
  8. }else{
  9. echo "{$dirname}文件不存在<br>";
  10. }

4.删除目录 rmdir()

  1. //判断目录或文件是否存在
  2. if(file_exists($dirname)){
  3. //判断是否是目录
  4. if(is_dir($dirname)){
  5. //尝试删除 dirname 所指定的目录。 该目录必须是空的,且要有相应的权限。
  6. rmdir($dirname);
  7. }
  8. }

5.更改目录的访问权限 chmod()

参数包含三个八进制数按顺序分别指定了所有者、所有者所在的组以及所有人的访问限制。
每一部分都可以通过加入所需的权限来计算出所要的权限。
数字 1 表示使文件可执行,数字 2 表示使文件可写,
数字 4 表示使文件可读。加入这些数字来制定所需要的权限。
提示:在window下文件的只读权限是 0444,文件夹只读权限0555。
注意:此函数不能作用于远程文件。

  1. //文件或目录的权限,权限值不能价引号,Windows会忽略权限值,而Linux下才会有效果
  2. chmod($dirname,0777);

6.取得目录或文件访问权限 fileperms()

  1. //获取文件的权限值,返回值:以十进制数字返回文件的访问权限
  2. $int = fileperms($dirname);
  3. //十进制转换为八进制
  4. $int = decoct($int);
  5. echo $int;
  6. echo '<hr>';
  7. //截取字符串40777转成0777
  8. echo substr($int,-4);

7.重命名或移动文件或目录 rename()

  1. //重命名或移动一个文件或目录。如果文件不存在同一目录下,就是移动。
  2. $oldname = "./public/icon";
  3. $newname = "./icon";
  4. rename($oldname,$newname);

8.打开目录 opendir()

  1. // 描述:打开目录句柄,可用于之后的 closedir(),readdir() 和 rewinddir() 调用中
  2. // 打开目录,成功返回目录句柄(资源型),失败返回false
  3. $handle = opendir($dirname);
  4. var_dump($handle);

9.读取目录中条目 readdir()

  1. //描述:从目录句柄中读取条目 (文件或目录)
  2. while($line = readdir($handle)){
  3. echo $line."<br>";
  4. }

10.显示中文目录或文件 iconv()

  1. //语法:string iconv ( string $in_charset , string $out_charset , string $str )
  2. //参数:$in_charset,输入的字符集;$out_charset,输出的字符集;$str,要转换的字符串
  3. while($line = readdir($handle)){
  4. echo iconv('utf-8','utf-8',$line)."<br>";
  5. }

11.关闭目录句柄 closedir()

  1. //描述:关闭由 dir_handle 指定的目录流。流必须之前被 opendir() 所打开。
  2. //关闭目录句柄,节省服务器资源
  3. closedir($handle);

二、文件操作

1、打开文件 fopen()

打开文件或者 URL 参数:$filename,指定要打开的目标文件或URL;$mode,指定文件的打开方式。

  1. $filename = "./01.jpg";
  2. //以只读方式打开文件,返回文件句柄资源
  3. $handle = fopen($filename,'rb');
  4. //以写入方式打开文件,返回文件句柄资源

打开文件的方式

1) ‘r’ 只读方式打开,将文件指针指向文件头。
2) ‘w’ 写入方式打开,将文件指针指向文件头并将文件大小截为零。如果文件不存在则尝试创建之。
3) ‘a’ 写入方式打开,将文件指针指向文件末尾。如果文件不存在则尝试创建之。

2.读取指定大小文件内容 fread()

读取文件(可安全用于二进制文件)参数:$handle是由fopen()创建的handle;$length最多读取的字节数

  1. // 1.读取全部数据:filesize()函数获取文件大小,以字节为单位
  2. $str = fread($handle,filesize($filename));
  3. // 2.告诉跨浏览器,以图片数据显示
  4. header("Content-Type:image/png ");
  5. echo $str;

3.关闭文件 fclose()

  1. // 描述:关闭一个已打开的文件指针
  2. fclose($handle);

4.读取一行内容 fgets()

参数:$handle:文件指针必须是有效的
$length:从 handle指向的文件中读取一行并返回长度最多为 length - 1 字节的字符串。
碰到换行符(包括在返回值中)、EOF 或者已经读取了 length - 1 字节后停止(看先碰到那一种情况)。
如果没有指定 length,则默认为 1K,或者说 1024 字节。

  1. <?php
  2. $filename = "./student.txt";
  3. //以只读方式打开文件,返回文件句柄资源
  4. $handle = fopen($filename,'rb');
  5. // 循环遍历读取数据,喷到换行符都会终止读取
  6. while($str = fgets($handle)){
  7. echo $str."<br>";
  8. }
  9. fclose($handle);
  10. ?>

5.读取文件内容到数组中 file()

描述:把整个文件读入一个数组中
参数:$filename,文件的路径;$flags,附加选项;
FILE_USE_INCLUDE_PATH(1):在include_path 中查找文件;
FILE_IGNORE_NEW_LINES(2):在数组的每个元素末尾不添加换行符;
FILE_SKIP_EMPTY_LINES(4):跳过空行。

  1. $filename = "//m.sbmmt.com/";
  2. // 不用打开文件和关闭文件
  3. $arr = file($filename,2|4);
  4. // 打开数组
  5. print_r($arr);

6.将整个文件读入一个字符串 file_get_contents()

  1. <?php
  2. //打开文件 fopen() 实例:读取远程网页的数据
  3. $filename = "http://news.sina.com.cn/";
  4. // 描述:将整个文件读入一个字符串 ,不用打开文件,也不用关闭文件
  5. $str = file_get_contents($filename);
  6. // 打开数组
  7. print_r($str);
  8. ?>

7.将一个字符串写入文件 file_put_contents()

描述:和依次调用 fopen(),fwrite()以及 fclose() 功能一样。
参数:$filename要被写入数据的文件名。
$data要写入的数据。类型可以是 string,array(一维数组)。
$flags附加选项。FILE_USE_INCLUDE_PATH(1) 在 include 目录里搜索 filename
FILE_APPEND(8)如果文件 filename已经存在,追加数据而不是覆盖。
LOCK_EX(2)在写入时获得一个独占锁

  1. // 实例:将新浪新闻主页另存为到本地
  2. $filename = "http://news.sina.com.cn/";
  3. /* $filename = "http://news.sina.com.cn/";*/
  4. // 读取网页内容到字符串中
  5. $str = file_get_contents($filename);
  6. // 另存为本地文件
  7. file_put_contents('./sina.html',$str);

8.写入文件内容 fwrite()

  1. <?php
  2. //实列:写入文件内容 fwrite()
  3. //描述:写入文件(可安全用于二进制文件)
  4. $filename = "./student.txt";
  5. // 以追加方式打开文件
  6. $handle =fopen($filename,'ab');
  7. // 写入一行数据windows下换行符为"\r\n".linux下换行符为”\n“
  8. $str = "1001,lisi,20,4500,河南\r\n";
  9. fwrite($handle,$str);
  10. fclose($handle);
  11. ?>

9.复制文件 copy()

  1. <?php
  2. // 实例:复制文件
  3. $old = "./01.jpg";
  4. $new = "./02.jpg";
  5. copy($old,$new);
  6. ?>

10.删除文件 unlink

  1. <?php
  2. // 实例删除文件
  3. $new = "./02.jpg";
  4. unlink($new);
  5. ?>

三、实例

1.递归展示所有目录和文件

分析过程:
(1)函数递归:递归是通过函数调用自己来实现
(2)操作顺序:打开目录-读取所有条目
(3)递归条件:如果它是目录,则递归调用,即打开打开目录-读取所有条目录
(4)关闭目录

  1. <?php
  2. //实例:递归展示所有目录和文件
  3. function show_all_files($dir){
  4. //打开目录,返回目录句柄资源
  5. $handle = opendir($dir);
  6. // var_dump($handle);die();
  7. echo "<ul>";
  8. //循环读取目录中所有条目
  9. while ($line = readdir($handle)) {
  10. //如果是"."或者是"..",则跳过
  11. if($line == '.' || $line == '..' ){
  12. continue;//终止本次循环,开始下一次循环,本次循环的剩于代码不再执行
  13. }
  14. echo "<li>{$line}</li>";
  15. //如果当前条目是目录,则递归调用
  16. if(is_dir($dir."/".$line)){//退出递归条件
  17. show_all_files($dir."/".$line);
  18. }
  19. }
  20. echo "</ul>";
  21. }
  22. //调用函数
  23. show_all_files("./public");
  24. ?>

2.递归删除目录

  1. <?php
  2. // 实例:
  3. function del_all_files($dir){
  4. // 打开目录
  5. $handle = opendir($dir);
  6. // 循环读取所有条目
  7. while ($line = readdir($handle)) {
  8. // 如果是"."或者"..",则跳过
  9. if($line == '.' || $line == '..'){
  10. continue;
  11. }
  12. // 判断是文件还是目录
  13. if(is_dir($dir."/".$line)){
  14. //递归调用
  15. del_all_files($dir."/".$line);
  16. }else{
  17. // 如果是文件,直接删除
  18. unlink($dir."/".$line);
  19. }
  20. }
  21. // 关闭目录
  22. closedir($handle);
  23. // 删除目录
  24. rmdir($dir);
  25. }
  26. // 调用函数
  27. del_all_files("./public");
  28. ?>

版权申明:本博文版权归博主所有,转载请注明地址!如有侵权、违法,请联系admin@php.cn举报处理!

全部评论

文明上网理性发言,请遵守新闻评论服务协议

条评论
  • php:1、opendir于打开;2、readdir于读取;3、mkdir于创建;4、rmdir于删除等等。