zoukankan      html  css  js  c++  java
  • PHP文件及目录考察点

    文件读取/写入操作

    fopen()函数

    用来打开一个文件,打开时需要指定打开模式

    打开模式
    模式 |作用
    --- |---
    'r' |只读方式打开,将文件指针指向文件头。
    'r+' |读写方式打开,将文件指针指向文件头。
    'w' |写入方式打开,将文件指针指向文件头并将文件大小截为零。如果文件不存在则尝试创建之。
    'w+' |读写方式打开,将文件指针指向文件头并将文件大小截为零。如果文件不存在则尝试创建之。
    'a' |写入方式打开,将文件指针指向文件末尾。如果文件不存在则尝试创建之。
    'a+' |读写方式打开,将文件指针指向文件末尾。如果文件不存在则尝试创建之。
    'x' |创建并以写入方式打开,将文件指针指向文件头。如果文件已存在,则 fopen() 调用失败并返回 FALSE,并生成一条 E_WARNING 级别的错误信息。如果文件不存在则尝试创建之。这和给 底层的 open(2) 系统调用指定 O_EXCL|O_CREAT 标记是等价的。
    'x+' |创建并以读写方式打开,其他的行为和 'x' 一样。

    写入函数

    • fwrite()

      int fwrite ( resource $handle , string $string [, int $length ] )

    • fputs() : fwrite的别名

    读取函数

    • fread() : 读取文件(可安全用于二进制文件)

      string fread ( resource $handle , int $length )

    • fgets() : 从文件指针中读取一行

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

    • fgetc() : 从文件指针中读取一个字符

      string fgetc ( resource $handle )

    关闭文件函数

    • fclose()

    不需要fopen()打开的函数

    • file_get_contents() : 将整个文件读入一个字符串

      string file_get_contents ( string $filename [, bool $use_include_path = false [, resource $context [, int $offset = -1 [, int $maxlen ]]]] )

    • file_put_contents() : 将一个字符串写入文件 , 和依次调用 fopen(),fwrite() 以及 fclose() 功能一样。

      int file_put_contents ( string $filename , mixed $data [, int $flags = 0 [, resource $context ]] )

    其他读取函数

    • file() : 把整个文件读入一个数组中

      array file ( string $filename [, int $flags = 0 [, resource $context ]] )

    • readfile() : 读取文件并写入到输出缓冲。

      int readfile ( string $filename [, bool $use_include_path = false [, resource $context ]] )

    访问远程文件

    开启allow_url_fopen,HTTP协议连接只能使用只读,FTP协议可以使用只读或者只写

    目录操作函数

    名称相关

    • basename() : 返回路径中的文件名部分

      string basename ( string $path [, string $suffix ] )

    <?php
    echo "1) ".basename("/etc/sudoers.d", ".d").PHP_EOL;
    echo "2) ".basename("/etc/passwd").PHP_EOL;
    echo "3) ".basename("/etc/").PHP_EOL;
    echo "4) ".basename(".").PHP_EOL;
    echo "5) ".basename("/");
    ?>

    输出:

    1) sudoers
    2) passwd
    3) etc
    4) .
    5) 
    • dirname() : 返回路径中的目录部分

      string dirname ( string $path )

    <?php
    echo "1) " . dirname("/etc/passwd") . PHP_EOL; // 1) /etc
    echo "2) " . dirname("/etc/") . PHP_EOL; // 2) / (or  on Windows)
    echo "3) " . dirname("."); // 3) .
    ?>
    • pathinfo() : 返回一个关联数组包含有 path 的信息。返回关联数组还是字符串取决于 options。

      mixed pathinfo ( string $path [, int $options = PATHINFO_DIRNAME | PATHINFO_BASENAME | PATHINFO_EXTENSION | PATHINFO_FILENAME ] )

    <?php
    $path_parts = pathinfo('/www/htdocs/inc/lib.inc.php');
    
    echo $path_parts['dirname'], "
    ";
    echo $path_parts['basename'], "
    ";
    echo $path_parts['extension'], "
    ";
    echo $path_parts['filename'], "
    "; // since PHP 5.2.0
    ?>

    输出

    /www/htdocs/inc
    lib.inc.php
    php
    lib.inc

    目录读取

    • opendir() : 打开一个目录句柄,可用于之后的 closedir(),readdir() 和 rewinddir() 调用中。

      resource opendir ( string $path [, resource $context ] )

    • readdir() : 返回目录中下一个文件的文件名。文件名以在文件系统中的排序返回。

      string readdir ([ resource $dir_handle ] )

    • closedir()
    • rewinddir() : 将 dir_handle 指定的目录流重置到目录的开头。

      void rewinddir ( resource $dir_handle )

    目录删除

    • rmdir() : 尝试删除 dirname 所指定的目录。 该目录必须是空的,而且要有相应的权限。 失败时会产生一个 E_WARNING 级别的错误。

      bool rmdir ( string $dirname [, resource $context ] )

    目录创建

    • mkdir() : 尝试新建一个由 pathname 指定的目录。

      bool mkdir ( string $pathname [, int $mode = 0777 [, bool $recursive = false [, resource $context ]]] )

    文件大小

    • filesize()

    目录大小

    • disk_free_space()
    • disk_total_space()

    文件拷贝

    • copy()

      bool copy ( string $source , string $dest [, resource $context ] )

    删除文件

    • unlink() : 删除 filename。和 Unix C 的 unlink() 函数相似。 发生错误时会产生一个 E_WARNING 级别的错误。

      bool unlink ( string $filename [, resource $context ] )

    文件类型

    • filetype() : 返回文件的类型。 可能的值有 fifo,char,dir,block,link,file 和 unknown。

    重命名文件或目录

    • rename()

      bool rename ( string $oldname , string $newname [, resource $context ] )

    文件截取

    • ftruncate()

      bool ftruncate ( resource $handle , int $size )

    文件属性

    • file_exists()
    • is_readable()
    • is_writeable()
    • is_executable()
    • filectime() : 取得文件的 inode 修改时间。 (状态改变时间change time)
    • fileatime() : 取得文件的上次访问时间(access time)
    • filemtime() : 取得文件修改时间(modify time)

    文件锁

    • flock()

    文件指针

    • ftell() : 返回由 handle 指定的文件指针的位置,也就是文件流中的偏移量。

      int ftell ( resource $handle )

    • fseek() : 在文件指针中定位

      int fseek ( resource $handle , int $offset [, int $whence = SEEK_SET ] )

    <?php
    
    $fp = fopen('somefile.txt', 'r');
    
    // 读取数据 
    $data = fgets($fp, 4096);
    
    // 将指针移动到文件开头
    // 与rewind($fp);效果一样
    fseek($fp, 0);
    
    ?>  
    • rewind() : 将 handle 的文件位置指针设为文件流的开头。

    示例

     1 <?php
     2 /**
     3  * 遍历目录里面的文件
     4  * 1 打开dir
     5  * 2 排除掉. 和 ..的情况
     6  * 3 如果是dir 则再对目录进行遍历,递归遍历
     7  */
     8 function loopDir($dir)
     9 {
    10     $handle = opendir($dir);
    11     while(false!==($file=readdir($handle))){//这里不能写成while($file=read($handle)),因为如果文件名为"0",也会被判断为false
    12         if ($file == '.' || $file == '..') {
    13             continue;
    14         }
    15         if (filetype($dir.'/'.$file)=='dir') {
    16             loopDir($dir.'/'.$file);
    17         } else {
    18             p($dir.'/'.$file);
    19         }
    20     }
    21     closedir($handle);
    22 }
    23 
    24 loopDir('.');

      

     
  • 相关阅读:
    css学习之 display:inline-block;
    java重写
    PDF在线阅读 FlexPaper 惰性加载 ;
    js两种生成对象模式(公有成员和成员私有)
    js 设计模式-接口
    聊聊 elasticsearch 之分词器配置 (IK+pinyin)
    nexus 批量上传jar到私有仓库内
    Java IDEA 根据mybatis-generator-core自动生成代码支持sqlserver获取备注(二)
    Elasticsearch实现搜索推荐词
    Java IDEA根据database以及脚本代码自动生成DO,DAO,SqlMapper文件(一)
  • 原文地址:https://www.cnblogs.com/lxj0205/p/9549448.html
Copyright © 2011-2022 走看看