PHP零基础入门-文件编程

概述

文件编程是指通过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);
              }
        }
    }
?>

猜你喜欢

转载自blog.csdn.net/weixin_42435721/article/details/86367116