• php 文件操作


    文件操作

    1.打开文件

    fopen — 打开文件或者 URL
    resource fopen( string $filename, string $mode[, bool $use_include_path = false[, resource $context]] )
    fopen() 将 filename 指定的名字资源绑定到一个流上。
    $filenamee 打开文件路径
    $mode 参数指定了所要求到该流的访问类型(读写)
    
    参数 注解
    'r' 只读方式打开,将文件指针指向文件头
    'r+' 读写方式打开,将文件指针指向文件头
    'w' 写入方式打开,将文件指针指向文件头并将文件大小截为零。如果文件不存在则尝试创建之
    'w+' 读写方式打开,将文件指针指向文件头并将文件大小截为零。如果文件不存在则尝试创建之
    'a' 写入方式打开,将文件指针指向文件末尾。如果文件不存在则尝试创建之
    'a+' 读写方式打开,将文件指针指向文件头

    Note:

    为移植性考虑,强烈建议在用 fopen() 打开文件时总是使用 'b' 标记
    例如:fopen ($file , "ab");

    2.string fread( resource $handle, int $length)

    
      fread — 读取文件(可安全用于二进制文件)
      $handle 文件系统指针,是典型地由 fopen() 创建的 resource(资源)。
     $length 最多读取 length 个字节
    

    3.string fgets( resource $handle[, int $length] )

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

    4.string fgetc( resource $handle)

    从文件句柄中获取一个字符。
    
    <?php
    $fp = fopen('somefile.txt', 'r');
    if (!$fp) {
        echo '文件打开失败';
        exit;
    }
    while (false !== ($char = fgetc($fp))) {
        echo "$char
    ";
    }
    
    fclose($handle);
    ?>
    

    5.文件写入数据

    fwrite ($handle,$str,[$length])
    $str        写入的字符串
    
    $lenght         写入多少个字节
            
    

    6.其他文件方法

    fclose()                    关闭文件
    
    file_get_contents()         获取文件内容
    
    file_put_contents()        将一个字符串写入文件
    
    is_file()                   判断给定文件是否为一个正常的文件
    
    filsesize()                 取得文件大小
    
    filetype()                  文件类型
    
    file_exists()               检查文件或目录是否存在
    
    unlink()                    删除文件函数
    
    file()                      把整个文件读入一个数组中
    
    fileatime($file_path)       获取文件上次访问时间
    
    filemtime($file_path)       获取文件上次内容被修改的时间
    
    is_readable()               判断给定文件名是否可读
    
    is_writable()               判断给定的文件名是否可写
    
    
    

    7.例子

    <?php
    
    /*
        	文件路径可以是
        		1.相对路径 $file = "./test.txt"
        		2.绝对路径 $file = "D:/wamp/www/php/file/test.txt"
        		3.url远程文件  "http://localhost/php/file/test.txt"
        	当远程文件打开,不能以写入的方式打开
            必须是远程存在的文件
            操作文件分为以下三步
        		1.打开文件
        		2.操作文件 (读 ,写等)
        		3.关闭文件
        	*/
          $filename = './test.txt';
          
          $file=fopen($filename,'ab');
          if(!$file){
              echo "打开文件失败";
              exit;
          }
          //写入文件
          $str="hello world!";
          if(fwrite($file,$str)){
            echo "写入文件成功";
          }
          //读取文件 fopen的打开方式应该是r或r+
          $file=fopen($filename,'rb');
          echo fread($file,filesize($filename));//hello world!
          //关闭文件
          fclose($file);
    
    ?>
    

    目录操作

    1 常用方法
    is_dir() 判断是不是一个目录

    mkdir() 新建目录(创建之前需要检测目录是否已经存在)

    opendir() 打开目录,返回一个目录句柄

    readdir() 从目录句柄中读取条目

    scandir() 列出指定路径中的文件和目录(以数组形式返回)

    getdir() 取得当前工作目录(当前脚本目录)

    chdir() 改变目录

    realpath() 转换为更直观的目录(以当前绝地路径显示出来)

    closedir() 关闭目录句柄
    2.例子

    <?php
    /**
     * 创建目录
     */
    $dir="./a";
    if(file_exists($dir)){
      echo "目录已存在";
      exit;
    }
    /**
     * bool mkdir( string $pathname[, int $mode = 0777[, bool $recursive = false[, resource $context]]] )
     *  pathname 目录的路径
     * 默认的 mode 是 0777,意味着最大可能的访问权
     * recursive 当创建包含子目录时必须为true
    */
    if(mkdir($dir)){
    echo "创建成功!";
    };
    // 打开文件
    $opDir = opendir($dir);
    // 输出目录
    while (($fileName = readdir($opDir)) !== false) {
      echo $fileName."<br />";
    }
    // 关闭目录
    closedir($opDir);
    ?>
    
    

    例子:获取给定目录下所有.php文件

    <?php
    //获取给定下的所有.php文件
    function getDir($path){
      //判断是否是目录
      if(is_dir($path)){
        // 列出指定路径中的文件和目录(以数组形式返回)
        $dir = scandir($path);
         foreach($dir as $val){
            $sub_path=$path .'/'.$val;
            if($val==="."|| $val===".."){
              continue;
    
            } else if(is_dir($sub_path)){
              echo '目录名:'.$val .'<br/>';
              getDir($sub_path);
            }else {
               //.$path 可以省略,直接输出文件名
               if(preg_match("/.php$/i",$val)){
                echo ' 文件:'.$path.'/'.$val.' <hr/>';
               }
            
            }
         }
    
    
      }
    }
    
    $path="../file";
    getDir($path);
    
  • 相关阅读:
    Tree Restoration Gym
    Game HDU
    Codeforces Gym 191033 E. Explosion Exploit (记忆化搜索+状压)
    listview去掉条目间的分割线
    listview设置条目点击的时候不变色(让状态选择器不起作用)
    url拼凑示例(具体拼凑规则由服务器定)
    格式化一个文件的大小(size),或者说是格式化一个app的大小(size)
    ratingbar设置不可调节星星数量
    listview的条目(item)如何做出卡片效果
    安卓网络权限异常
  • 原文地址:https://www.cnblogs.com/wentutu/p/12551451.html
Copyright © 2020-2023  润新知